home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / INTER53A.ZIP / INTERRUP.B < prev    next >
Text File  |  1997-01-12  |  356KB  |  9,628 lines

  1. Interrupt List, part 2 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------B-1318-------------------------------
  4. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  5.     AH = 18h
  6.     DL = drive number
  7.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  8.     CL = sectors per track (bits 0-5)
  9.          top 2 bits of highest cylinder number (bits 6,7)
  10. Return: AH = status
  11.         00h requested combination supported
  12.         01h function not available
  13.         0Ch not supported or drive type unknown
  14.         80h there is no disk in the drive
  15.     ES:DI -> 11-byte parameter table (see #0671 at INT 1E)
  16. Note:    this function does not set the INT 1E vector to point at the returned
  17.       parameter table; it is the caller's responsibility to do so
  18. SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E
  19. --------d-1318-------------------------------
  20. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  21.     AH = 18h
  22.     DL = hard drive ID
  23. Return: CF set on error
  24.         AH = status code (see #0144 at AH=01h)
  25.     CF clear if successful
  26.         AX = 4321h (magic number)
  27.         CX = controller family code (see #0159)
  28.         ---if family code=0200h
  29.         DH = number of exclusively ROM-controlled SCSI devices
  30.         DL = canonical SCSI device number for specified drive
  31.         ---if family code <> 0200h
  32.         BH = number of exclusively ROM-controlled SCSI devices
  33.         BL = canonical SCSI device number for specified drive
  34. Notes:    also sets an internal flag (non-resettable) which prevents some
  35.       controller messages from being displayed, allows writes to
  36.       removable devices (use caution!), and enables the INT 13 interface
  37.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  38.       versions
  39.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  40.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  41. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  42.  
  43. (Table 0159)
  44. Values for Future Domain SCSI controller family code:
  45.  0200h    TMC-1680/? (ROM 3.0)
  46.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  47.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  48.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  49.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  50. --------d-1318--CX5055-----------------------
  51. INT 13 - PU_1700.COM - INSTALLATION CHECK
  52.     AH = 18h
  53.     CX = 5055h ('PU')
  54.     DL = 00h
  55. Return: AX = 7570h ('up') if PU_1700 is installed
  56. Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits
  57.       formatting diskettes at higher capacity (1.78M instead of 1.44M)
  58. SeeAlso: AX=057Fh/SI=324Dh"2M"
  59. --------d-1318--CXD2C9-----------------------
  60. INT 13 - XDF.COM - API
  61.     AH = 18h
  62.     CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
  63.     DX = 0000h
  64.     BX = function
  65.         0000h installation check
  66.           Return: AH = 0Ch
  67.               CX = 7269h ("ri" = Roger Ivey)
  68.               ES = segment of driver
  69.               CF set
  70.         2F64h ("/d") disable the driver
  71.           Return: AH = 0Ch
  72.               ES:BX = pointer to activation flag (it is set to 0:
  73.                   set it to 1 to enable the driver again)
  74.               CX = 7269h
  75.               CF set
  76.         2F75h ("/u") unload the driver (restore interrupts & free memory)
  77.           Return: AH = 0Ch
  78.               DL = 55h ("U") if successful
  79.                  = 00h       if fails
  80.               CX = 7269h
  81.               ES = segment of driver
  82.               CF set
  83.               AL, BX, DH, and DI destroyed
  84. Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
  85.       developed by Roger D. Ivey
  86. Note:    After disabling or enabling the driver, a disk change must be performed
  87.       or simulated to reset the driver.
  88. --------B-1319-------------------------------
  89. INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
  90.     AH = 19h
  91.     DL = drive
  92. Return: CF set on error
  93.     CF clear if successful
  94.     AH = status (see #0144 at AH=01h)
  95. SeeAlso: AH=11h
  96. --------d-1319-------------------------------
  97. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  98.     AH = 19h
  99.     DL = hard drive ID
  100. Return: CF set on error
  101.         AH = status code (see #0144 at AH=01h)
  102.     CF clear if successful
  103.         AH = disk type (03h = fixed disk)
  104.         CX:DX = number of 512-byte sectors
  105. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  106.       adjusts the result for 512-byte sectors
  107.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  108.       sector" (nnn=256 or 512, the only sizes supported in the translation
  109.       code)
  110.     should probably be called when a removable device has its media changed
  111.     returns the same values as AH=15h
  112.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  113.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  114. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  115. --------d-131A-------------------------------
  116. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  117.     AH = 1Ah
  118.     AL = defect table entry count
  119.     CL = format modifiers (see #0160)
  120.     DL = drive (80h,81h)
  121.     ES:BX -> defect table (see #0161), ignored if AL=00h
  122. Return: CF set on error
  123.     CF clear if successful
  124.     AH = status (see #0144 at AH=01h)
  125. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  126.       cylinder is formatted
  127. SeeAlso: AH=07h,INT 15/AH=0Fh
  128.  
  129. Bitfields for ESDI format modifiers:
  130. Bit(s)    Description    (Table 0160)
  131.  4    generate periodic interrupt
  132.  3    perform surface analysis
  133.  2    update secondary defect map
  134.  1    ignore secondary defect map
  135.  0    ignore primary defect map
  136.  
  137. Format of defect table entry [array]:
  138. Offset    Size    Description    (Table 0161)
  139.  00h  3 BYTEs    relative sector address (little-endian)
  140.  03h    BYTE    flags and defect count
  141.         bit 7: last logical sector on track
  142.         bit 6: first logical sector on track
  143.         bit 5: last logical sector on cylinder
  144.         bit 4: logical sectors are pushed onto next track
  145.         bits 3-0: number of defects pushed from previous cylinder
  146. --------d-131A-------------------------------
  147. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  148.     AH = 1Ah
  149.     CH = track (bits 8,9 in high bits of CL)
  150.     CL = sector (01h to number of sectors/track for drive)
  151.     DH = head
  152.     DL = hard drive ID
  153. Return: CF set on error
  154.     AH = status code (see #0144 at AH=01h)
  155.     CX:DX = logical block number of last quickly-accessible block after
  156.         given block
  157. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  158.       logical block address of the last block after which a substantial
  159.       delay in data transfer will be encountered (usually the last block
  160.       on the current cylinder).  No translation to 512 byte sectors is
  161.       performed on the result if data is stored on the disk in other than
  162.       512 byte sectors.
  163.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  164.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  165. SeeAlso: AH=15h,AH=19h"SCSI"
  166. --------d-131B-------------------------------
  167. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  168.     AH = 1Bh
  169.     AL = number of sectors to read
  170.     DL = drive
  171.     ES:BX -> buffer for manufacturing header (defect list)
  172. Return: CF set on error
  173.     CF clear if successful
  174.     AH = status
  175. Note:    manufacturing header format (Defect Map Record format) can be found
  176.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  177.     the first sector read contains the manufacturing header with the number
  178.       of defect entries and the beginning of the defect map; the remaining
  179.       sectors contain the remainder of the defect map
  180. --------d-131B-------------------------------
  181. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  182.     AH = 1Bh
  183.     DL = hard drive ID
  184. Return: CF set on error
  185.         AH = status code (see #0144 at AH=01h)
  186.     CF clear if successful
  187.         ES:BX -> SCSI disk information block (see #0162)
  188. Notes:    also sets a non-resettable flag which prevents some controller messages
  189.       from being displayed
  190.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  191.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  192. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  193.  
  194. Format of Future Domain SCSI disk information block:
  195. Offset    Size    Description    (Table 0162)
  196.  00h    BYTE    drive physical information (see #0163)
  197.  01h    WORD    translated number of cylinders
  198.  03h    BYTE    translated number of heads
  199.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  200.  05h    BYTE    drive address
  201.         bits 0-2: logical unit number
  202.         bits 3-5: device number
  203.  06h    BYTE    01h at initialization
  204.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  205.  08h    BYTE    00h
  206.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  207.  0Ah    BYTE    00h
  208.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB) (see #3303,#3304)
  209.  15h    DWORD    translated number of sectors on device
  210.  
  211. Bitfields for Future Domain SCSI device physical information:
  212. Bit(s)    Description    (Table 0163)
  213.  0    ???
  214.  1    device uses parity
  215.  2    256 bytes per sector instead of 512
  216.  3    don't have capacity yet???
  217.  4    disk is removable
  218.  5    logical unit number is not present
  219. --------d-131C-------------------------------
  220. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  221.     AH = 1Ch
  222.     DL = hard drive ID (any valid SCSI hard disk)
  223. Return: CF set on error
  224.         AH = status code (see #0144 at AH=01h)
  225.     CF clear if successful
  226.         ES:BX -> first byte of free RAM on controller
  227. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  228.       to 1BFFh on-board the controller for storing drive information and
  229.       controller status; ES:BX points to the first byte available for other
  230.       uses
  231.     ES contains the segment at which the controller resides; the
  232.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  233. SeeAlso: AH=1Bh"SCSI"
  234. --------d-131C-------------------------------
  235. INT 13 U - ESDI FIXED DISK - ???
  236.     AH = 1Ch
  237.     AL = subfunction (01h-06h)
  238.     DL = drive (80h,81h)
  239.     ???
  240. Return: ???
  241. Note:    these functions perform a controller command 0612h without DMA
  242. SeeAlso: AX=1C08h,PORT 3510h"ESDI"
  243. --------d-131C08-----------------------------
  244. INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
  245.     AX = 1C08h
  246.     DL = drive (80h,81h)
  247.     ES:BX -> buffer for Command Complete Status Block (see #0164)
  248. Return: CF set on error
  249.     CF clear if successful
  250.     AH = status (see #0144 at AH=01h)
  251. SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI"
  252.  
  253. Format of ESDI Command Complete Status Block:
  254. Offset    Size    Description    (Table 0164)
  255.  00h    BYTE    07h
  256.  01h    BYTE    size of block in words (07h)
  257.  02h    BYTE    command error code (see #0165)
  258.  03h    BYTE    command status code (see #0166)
  259.  04h    BYTE    device error code, group 1 (see #0167)
  260.  05h    BYTE    device error flags, group 2 (see #0168)
  261.  06h    WORD    number of unprocessed sectors due to abnormal termination
  262.  08h    DWORD    last Relative Sector Address processed by command
  263.  0Ch    WORD    number of sectors corrected by ECC codes
  264.  
  265. (Table 0165)
  266. Values for ESDI command error code:
  267.  00h    successful
  268.  01h    parameter invalid
  269.  02h    unknown function
  270.  03h    unsupported command
  271.  04h    command cancelled
  272.  05h    unknown function
  273.  06h    controller diagnostics failed
  274.  07h    formatting failed
  275.  08h    format error in primary map
  276.  09h    format error in secondary map
  277.  0Ah    diagnostic failure during formatting
  278.  0Bh    warning: secondary map too large during formatting
  279.  0Ch    warning: non-zero defect
  280.  0Dh    system checksum error during formatting
  281.  0Eh    warning: incompatible device
  282.  0Fh    warning: push table overflowed
  283.  10h    warning: more than 15 sectors pushed to next cylinder
  284.  11h    internal hardware error
  285.  12h    warning: errors found while verifying sectors
  286.  13h    invalid device
  287.  FFh    device error
  288.  
  289. (Table 0166)
  290. Values for ESDI command status code:
  291.  01h    successful
  292.  03h    successful after ECC
  293.  05h    successful after retries
  294.  06h    format partially completed
  295.  07h    successful after ECC and retries
  296.  08h    command completed with warning (see #0165)
  297.  09h    abort complete
  298.  0Ah    reset complete
  299.  0Bh    data transfer ready (no status block)
  300.  0Ch    command completed with failure (see #0167,#0168)
  301.  0Dh    DMA error
  302.  0Eh    command block error (see #0165)
  303.  0Fh    bad attention code
  304. SeeAlso: #0167
  305.  
  306. (Table 0167)
  307. Values for ESDI device error code, group 1:
  308.  00h    successful
  309.  01h    seek fault detected by device
  310.  02h    interface fault
  311.  03h    sector ID not found
  312.  04h    disk not formatted
  313.  05h    unrecoverable ECC error
  314.  06h    ECC error in sector ID
  315.  07h    invalid relative sector address
  316.  08h    timeout
  317.  09h    sector defective
  318.  0Ah    disk changed (removable media)
  319.  0Bh    selection error
  320.  0Ch    write protected (removable media)
  321.  0Dh    write fault
  322.  0Eh    read fault
  323.  0Fh    no index or sector pulse
  324.  10h    device not ready
  325.  11h    seek error detected by adapter
  326.  12h    bad format
  327.  13h    volume overflow
  328.  14h    data address mark not found
  329.  15h    sector ID not found
  330.  16h    missing device configuration data
  331.  17h    first/last relative sector flags missing
  332.  18h    track empty
  333.  81h    timeout while waiting for stop
  334.  82h    timeout while waiting for end of data transfer
  335.  84h    stopped awaiting data transfer during formatting
  336.  85h    timeout while waiting for head switch
  337.  86h    timeout while awaiting DMA completion
  338. SeeAlso: #0166,#0168
  339.  
  340. Bitfields for ESDI device error flags, group 2:
  341. Bit(s)    Description    (Table 0168)
  342.  7-5    unused
  343.  4    ready
  344.  3    selected
  345.  2    write fault
  346.  1    on track 0
  347.  0    seek/command complete
  348. SeeAlso: #0167
  349. --------d-131C09-----------------------------
  350. INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
  351.     AX = 1C09h
  352.     DL = drive (80h,81h)
  353.     ES:BX -> buffer for Device Status Block (see #0169)
  354. Return: CF set on error
  355.     CF clear if successful
  356.     AH = status (see #0144 at AH=01h)
  357. SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI"
  358.  
  359. Format of ESDI Device Status Block:
  360. Offset    Size    Description    (Table 0169)
  361.  00h    BYTE    08h
  362.  01h    BYTE    number of words in block (09h)
  363.  02h    BYTE    error flags
  364.  03h    BYTE    unused
  365.  04h    BYTE    command error code (see #0165)
  366.  05h    BYTE    command status code (see #0166)
  367.  06h    WORD    ESDI standard status
  368.  08h  5 WORDs    ESDI vendor-specific status codes
  369. --------d-131C0A-----------------------------
  370. INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  371.     AX = 1C0Ah
  372.     DL = drive (80h,81h)
  373.     ES:BX -> buffer for Drive Configuration Status Block (see #0170)
  374. Return: CF set on error
  375.     CF clear if successful
  376.     AH = status (see #0144 at AH=01h)
  377. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  378.       Adapter/A Technical Reference
  379. SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
  380.  
  381. Format of ESDI Drive Configuration Status Block:
  382. Offset    Size    Description    (Table 0170)
  383.  00h    BYTE    09h
  384.  01h    BYTE    number of words in block (06h)
  385.  02h    BYTE    flags
  386.  03h    BYTE    number of spare sectors per cylinder
  387.  04h    DWORD    total number of usable sectors
  388.  08h    WORD    total number of cylinders
  389.  0Ah    BYTE    tracks per cylinder
  390.  0Bh    BYTE    sectors per track
  391. --------d-131C0B-----------------------------
  392. INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  393.     AX = 1C0Bh
  394.     ES:BX -> buffer for Controller Configuration Status Block (see #0171)
  395. Return: CF set on error
  396.     CF clear if successful
  397.     AH = status (see #0144 at AH=01h)
  398. SeeAlso: AX=1C0Ch
  399.  
  400. Format of ESDI Controller Configuration Status Block:
  401. Offset    Size    Description    (Table 0171)
  402.  00h    BYTE    E9h
  403.  01h    BYTE    number of words in block (06h)
  404.  02h    WORD    unused (0000h)
  405.  04h    DWORD    controller microcode revision level
  406.  08h  2 WORDs    unused (0000h)
  407. --------d-131C0C-----------------------------
  408. INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
  409.     AX = 1C0Ch
  410.     ES:BX -> buffer for POS Information Status Block (see #0172)
  411. Return: CF set on error
  412.     CF clear if successful
  413.     AH = status (see #0144 at AH=01h)
  414. SeeAlso: AX=1C0Bh
  415.  
  416. Format of ESDI POS Information Status Block:
  417. Offset    Size    Description    (Table 0172)
  418.  00h    BYTE    EAh
  419.  01h    BYTE    number of words in block (05h)
  420.  02h    WORD    magic value FFDDh
  421.  04h    BYTE    POS register 3
  422.  05h    BYTE    POS register 2
  423.  06h    BYTE    POS register 5 (unused, FFh)
  424.  07h    BYTE    POS register 4 (unused, FFh)
  425.  08h    BYTE    POS register 7 (unused, FFh)
  426.  09h    BYTE    POS register 6 (unused, FFh)
  427. --------d-131C0D-----------------------------
  428. INT 13 U - ESDI FIXED DISK - ???
  429.     AX = 1C0Dh
  430.     DL = drive (80h,81h)
  431.     ???
  432. Return: ???
  433. Note:    invokes controller command 0614h without DMA
  434. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  435. --------d-131C0E-----------------------------
  436. INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  437.     AX = 1C0Eh
  438.     CH = low 8 bits of cylinder number
  439.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  440.     DH = head number
  441.     DL = drive number (80h,81h)
  442.     ES:BX -> ABA number
  443. Return: CF set on error
  444.     CF clear if successful
  445.     AH = status (see #0144 at AH=01h)
  446. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  447.       Technical Reference by using its Device Configuration Status Block
  448. SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"
  449. --------d-131C0F-----------------------------
  450. INT 13 U - ESDI FIXED DISK - ???
  451.     AX = 1C0Fh
  452.     DL = drive (80h,81h)
  453.     ???
  454. Return: ???
  455. Note:    invokes controller command 0614h without DMA
  456. SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"
  457. --------d-131C12-----------------------------
  458. INT 13 U - ESDI FIXED DISK - ???
  459.     AX = 1C12h
  460.     DL = drive (80h,81h)
  461.     ???
  462. Return: ???
  463. Note:    invokes controller command 0612h without DMA
  464. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  465. --------c-131D-------------------------------
  466. INT 13 - IBMCACHE.SYS - CACHE STATUS
  467.     AH = 1Dh
  468.     AL = subfunction
  469.         01h get status record
  470.         DL = drive???
  471.         Return: ES:BX -> status record (see #0173)
  472.             CF set on error
  473.                 AH = error code
  474.         02h set cache status
  475.         ES:BX -> status record (see #0173)
  476.         DL = drive???
  477.         Return: CF set on error
  478.  
  479. Format of IBMCACHE.SYS status record:
  480. Offset    Size    Description    (Table 0173)
  481.  00h    DWORD    total number of read requests
  482.  04h    DWORD    total number of hits
  483.  08h    DWORD    number of physical disk reads
  484.  0Ch    DWORD    total number of sectors requested by physical disk reads
  485.  10h  6 BYTEs    ???
  486.  16h    DWORD    pointer to start of error list (see #0174)
  487.  1Ah    DWORD    pointer to end of error list
  488.  1Eh    WORD    ???
  489.  20h    BYTE    using extended memory if nonzero
  490.  21h    BYTE    ???
  491.  22h  4 BYTEs    ASCII version number
  492.  26h    WORD    cache size in KB
  493.  28h    WORD    sectors per page
  494.  
  495. Format of IBMCACHE.SYS error list:
  496. Offset    Size    Description    (Table 0174)
  497.  00h    DWORD    relative block address of bad page
  498.  04h    BYTE    drive
  499.  05h    BYTE    sector bit-map
  500.  06h    WORD    next error
  501. --------d-131F-------------------------------
  502. INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
  503.     AH = 1Fh
  504.     AL = subfunction
  505.         00h allow media removal
  506.         01h prevent media removal (lock door)
  507.     DL = drive ID (bit 7 set for hard disks)
  508. Return: CF clear if successful
  509.         AH = 00h
  510.     CF set on error
  511.         AH = error code
  512.         00h successful
  513.         01h invalid function request
  514.         80h timeout
  515.         DDh media change requested
  516. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
  517. --------d-1320-------------------------------
  518. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  519.     AH = 20h
  520.     ???
  521. Return: ???
  522. Notes:    returns some kind of status related to whether the drive contains its
  523.       default media type
  524.     QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
  525. --------b-1320-------------------------------
  526. INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT
  527.     AH = 20h
  528.     DL = drive number (00h,01h)
  529. Return: CF clear if successful
  530.         AL = media type (see #0175)
  531.         AH = 00h
  532.     CF set on error
  533.         AH = error code
  534.         30h (Phoenix) ???
  535.         31h no such drive / media not present
  536.         32h non-default media
  537. Notes:    this function is supported by the 3/8/93 ROM BIOS, but only partially
  538.       (AL is always 00h when successful) by the 8/3/93 version
  539.     this function is also supported by some recent versions of the Phoenix
  540.       486 BIOS
  541.  
  542. (Table 0175)
  543. Values for Compaq/ATAPI diskette media type:
  544.  03h    720K
  545.  04h    1.44M
  546.  06h    2.88M
  547.  0Ch    360K
  548.  0Dh    1.2M
  549.  0Eh    Toshiba 3mode
  550.  0Fh    NEC 3mode (1024-byte sectors)
  551.  10h    ATAPI Removable Media Device
  552. --------c-1320-------------------------------
  553. INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
  554.     AH = 20h
  555.     AL = drive (00h = A:, etc. or 7Fh for all removable drives???
  556.                    or FFh for all drives)
  557. Return: AX = status (0000h successful)
  558. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  559.       Associates, Inc.
  560. Desc:    flush any dirty buffers for the specified drive(s) and then discard
  561.       those sector buffers
  562. SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
  563. --------d-1321-------------------------------
  564. INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
  565.     AH = 21h
  566.     AL = number of sectors to write
  567.     CH = low byte of 12-bit cylinder number
  568.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  569.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  570.     DL = drive number (80h,81h)
  571.     ES:BX -> buffer for data to be read
  572. Return: CF clear if successful
  573.         ES:BX buffer filled
  574.     CF set on error
  575.     AH = status (see #0144 at AH=01h)
  576. Desc:    read from the disk using the Multiple Block mode available on newer
  577.       IDE drives and some hard disk controllers, which generates an
  578.       interrupt only after the end of transferring a group of sectors
  579.       rather than after each sector
  580. Notes:    must call AH=24h"PS/1" before using this function
  581.     input values in CL and DH are not range-checked
  582.     the byte at address 0040h:0074h is set to the status of the operation
  583. SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  584. --------c-1321-------------------------------
  585. INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
  586.     AH = 21h
  587. Return: AX = status (0000h successful)
  588. Desc:    immediately write all dirty sectors back to disk
  589. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
  590. --------d-1322-------------------------------
  591. INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
  592.     AH = 22h
  593.     AL = number of sectors to write
  594.     CH = low byte of 12-bit cylinder number
  595.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  596.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  597.     DL = drive number (80h,81h)
  598.     ES:BX -> buffer containing data to be written
  599. Return: CF clear if successful
  600.     CF set on error
  601.     AH = status (see #0144 at AH=01h)
  602. Desc:    write to the disk using the Multiple Block mode available on newer
  603.       IDE drives and some hard disk controllers, which generates an
  604.       interrupt only after the end of transferring a group of sectors
  605.       rather than after each sector
  606. Notes:    must call AH=24h"PS/1" before using this function
  607.     input values in CL and DH are not range-checked
  608.     the byte at address 0040h:0074h is set to the status of the operation
  609. SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  610. --------c-1322-------------------------------
  611. INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
  612.     AH = 22h
  613.     AL = new state (00h disabled, 01h enabled)
  614. Return: AX = status (0000h successful)
  615. Note:    enables/disables caching of all drives
  616. SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
  617. --------d-1323-------------------------------
  618. INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
  619.     AH = 23h
  620.     AL = feature number (see #0176)
  621.     DL = drive number (80h,81h)
  622.     ???
  623. Return: CF clear if successful
  624.     CF set on error
  625.     AH = status (see #0144 at AH=01h)
  626. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
  627.  
  628. (Table 0176)
  629. Values for PS/1 hard disk feature number:
  630.  01h    select 8-bit data transfers instead of 16-bit
  631.  02h    enable write cache
  632.  22h    Write Same, user-specified area
  633.  33h    disable retries
  634.  44h    set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
  635.  54h    set cache segments
  636.  55h    disable lookahead
  637.  66h    disable reverting to power-on defaults
  638.  77h    disable error correctioni
  639.  81h    select 16-bit data transfers (default)
  640.  82h    disable write cache
  641.  88h    enable error correction (default)
  642.  99h    enable retries (default)
  643.  AAh    enable lookahead
  644.  BBh    set ECC length for read long/write long to four bytes
  645.  CCh    enable reverting to power-on defaults
  646.  DDh    Write Same, entire disk
  647. SeeAlso: #P281
  648. --------c-1323-------------------------------
  649. INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
  650.     AH = 23h
  651. Return: AX = status (0000h successful)
  652.     ES = segment of ??? data
  653. --------d-1324-------------------------------
  654. INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
  655.     AH = 24h
  656.     AL = number of sectors per block (2,4,8,16)
  657.     DL = drive number (80h,81h)
  658. Return: CF clear if successful
  659.     CF set onerror
  660.     AH = status (see #0144 at AH=01h)
  661. Desc:    specify how many sectors the controller should transfer as a group
  662.       between operation-complete interrupts when using the Read Multiple
  663.       and Write Multiple functions (AH=21h,AH=22h)
  664. Notes:    set the number of sectors to 0 to disable multiple-transfer mode
  665.     the maximum value for the block size depends on the fixed disk
  666.       drive type.  The value is stored in byte 15h of the fixed disk
  667.       drive parameter table that is created by POST.
  668.     the byte at address 0040h:0074h is set to status of operation.
  669. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
  670. --------c-1324-------------------------------
  671. INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
  672.     AH = 24h
  673.     BX = new number of sector buffers in cache
  674. Return: AX = status
  675.         0000h successful
  676.         0001h failed--size adjusted
  677.         8000h cache cannot be resized while enabled
  678. SeeAlso: AH=36h
  679. --------d-1325-------------------------------
  680. INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
  681.     AH = 25h
  682.     DL = drive number (80h,81h)
  683.     ES:BX-> 512 byte buffer for reply packet
  684. Return: CF clear if successful
  685.     CF set on error
  686.     AH = status (see #0144 at AH=01h)
  687.     buffer filled with ATA/IDE-style drive information block (see #0177)
  688. Desc:    retrieves the 256 words of drive data stored on an IDE hard disk
  689. Note:    the byte at address 0040h:0074h is set to the status of the operation
  690. SeeAlso: AH=23h"PS/1"
  691.  
  692. Format of drive information block:
  693. Offset    Size    Description    (Table 0177)
  694.  00h    WORD    general drive configuration (see #0178)
  695.  02h    WORD    number of cylinders
  696.  04h    WORD    reserved
  697.  06h    WORD    number of heads
  698.  08h    WORD    number of unformatted bytes per track
  699.  0Ah    WORD    number of unformatted bytes per sector
  700.  0Ch    WORD    number of sectors per track
  701.  0Eh  6 BYTEs    vendor unique
  702.  14h 20 BYTEs    serial number in ASCII, 0000h=not specified)
  703.  28h    WORD    buffer type
  704.  2Ah    WORD    buffer size in 512 byte increments (0000h=not specified)
  705.  2Ch    WORD    number of ECC bytes passed on Read/Write Long cmds
  706.         0000h = not specified
  707.  2Eh  8 BYTEs    firmware revision in ASCII, 0000h=not specified
  708.  36h 40 BYTEs    model number in ASCII, 0000h=not specified
  709.  5Eh    WORD    bits 15-8  Vendor Unique
  710.         bits 7-0  00h = Read/Write Multiple commands not implemented
  711.               xxh = Maximum number of sectors that can be
  712.               transferred per interrupt on Read and Write
  713.               Multiple commands
  714.  60h    WORD    0000h = cannot perform doubleword I/O
  715.         0001h = can perform doubleword I/O
  716.  62h    WORD    capabilities
  717.         bit 15-9  0=reserved
  718.         bit 8  1=DMA Supported
  719.         bit 7-0     Vendor Unique
  720.  64h    WORD    reserved
  721.  66h    WORD    bits 15-8 PIO data transfer cycle timing mode
  722.         bits 7-0  Vendor Unique
  723.  68h    WORD    bits 15-8 DMA data transfer cycle timing mode
  724.         bits 7-0  Vendor Unique
  725.  6Ah    WORD    bits 15-1 reserved
  726.         bit 0    1=the fields reported in tranlation mode are valid
  727.             0=the fields reported in translation mode may be valid
  728.  6Ch    WORD    number of current cylinders
  729.  6Eh    WORD    number of current heads
  730.  70h    WORD    number of current sectors per track
  731.  72h    DWORD    current capacity in sectors
  732.  76h    WORD    reserved
  733.  78h 136 BYTEs    not defined by ATA spec 2.6
  734. 100h 64 BYTEs    vendor unique
  735. 140h 96 BYTEs    reserved
  736. Note:    the above description is as in the ATA (AT Attachment) Specification.
  737. SeeAlso: #P087
  738.  
  739. Bitfields for general drive configuration:
  740. Bit(s)    Description    (Table 0178)
  741.  15    0   reserved for non-magnetic drives
  742.  14    format speed tolerance gap required
  743.  13    track offset option available
  744.  12    data strobe offset option available
  745.  11    rotational speed tolerance is > 0.5%
  746.  10    disk transfer rate > 10 Mbs
  747.  9    disk transfer rate > 5Mbs but <= 10Mbs
  748.  8    disk transfer rate <= 5Mbs
  749.  7    removable cartridge drive
  750.  6    fixed drive
  751.  5    spindle motor control option implemented
  752.  4    head switch time > 15 usec
  753.  3    not MFM encoded
  754.  2    soft sectored
  755.  1    hard sectored
  756.  0    reserved (0)
  757. --------c-1325-------------------------------
  758. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
  759.     AH = 25h
  760.     BX = interval
  761. Return: AX = status (0000h successful)
  762. Desc:    specify how often the cache should write dirty buffers to disk when
  763.       buffered writes are enabled
  764. SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
  765. --------c-1326-------------------------------
  766. INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
  767.     AH = 26h
  768. Return: AX = status
  769.         0000h successful
  770.         0001h-00FFh interrupt vector which was hooked by another TSR
  771. SeeAlso: AH=27h
  772. --------c-1327--BX0000-----------------------
  773. INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
  774.     AH = 27h
  775.     BX = 0000h
  776. Return: AX = 0000h if installed
  777.     BX nonzero if installed
  778.         BH = major version
  779.         BL = binary minor version
  780. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  781.       Associates, Inc.
  782. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
  783. --------c-1328-------------------------------
  784. INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
  785.     AH = 28h
  786.     AL = new state (00h disabled, 01h enabled)
  787. Return: AX = status (0000h successful)
  788. SeeAlso: AH=20h"QUICKCACHE"
  789. --------c-1329-------------------------------
  790. INT 13 U - QUICKCACHE II v4.20 - NOP
  791.     AH = 29h
  792. Return: AX = 0000h
  793. --------c-132A-------------------------------
  794. INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
  795.     AH = 2Ah
  796.     AL = buffer size (1-30)
  797. Return: AX = status (0000h successful)
  798. Desc:    specify the number of cache sector buffers to dedicate to buffered read
  799.       and write operations
  800. SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
  801. --------c-132B-------------------------------
  802. INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
  803.     AH = 2Bh
  804.     AL = new state (00h disabled, 01h enabled)
  805. Return: AX = status (0000h successful)
  806. --------c-132C-------------------------------
  807. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
  808.     AH = 2Ch
  809.     AL = new state (00h disabled, 01h enabled)
  810. Return: AX = status (0000h successful)
  811. Desc:    specify whether the cache should delay disk writes
  812. Note:    this function enables or disables delayed writes for all drives; use
  813.       AH=38h to change a single drive
  814. SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
  815. --------c-132D-------------------------------
  816. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
  817.     AH = 2Dh
  818.     AL = new state (00h disabled, 01h enabled)
  819. Return: AX = status (0000h successful)
  820. Desc:    specify whether the cache should attempt to read ahead of actual
  821.       requests
  822. Note:    this function enables or disables read-ahead for all drives; use AH=37h
  823.       to change a single drive
  824. SeeAlso: AH=2Ch,AH=37h
  825. --------c-132E-------------------------------
  826. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
  827.     AH = 2Eh
  828.     BX = flush count
  829. Return: AX = status (0000h successful)
  830. Desc:    specify how many dirty sectors the cache should write after each flush
  831.       interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
  832. SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
  833. --------c-132F-------------------------------
  834. INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
  835.     AH = 2Fh
  836. Return: AX = status (0000h successful)
  837. Desc:    immediately flush up to "flushcount" dirty sectors to disk as if the
  838.       flush interval had expired
  839. SeeAlso: AH=21h"QUICKCACHE"
  840. --------c-1330-------------------------------
  841. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  842.     AH = 30h
  843.     AL = what to get
  844.         00h system info (see #0179)
  845.         01h drive info (see #0180)
  846.         02h access frequency (array of 30 words)
  847.         03h drive index
  848.         (array of 32 bytes indicating BIOS drive for DOS drive)
  849.     DS:DX -> buffer for info
  850. Return: AX = status (0000h successful, 8000h invalid info specifier)
  851. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  852.       Associates, Inc.
  853.  
  854. Format of QUICKCACHE II system info:
  855. Offset    Size    Description    (Table 0179)
  856.  00h    BYTE    flag: cache enabled
  857.  01h    BYTE    flag: buffered writes enabled
  858.  02h    BYTE    flag: buffered reads enabled
  859.  03h    BYTE    flag: sounds enabled
  860.  04h    BYTE    flag: autodismount enabled
  861.  05h    BYTE    ???
  862.  06h    BYTE    flag: ???
  863.  07h    BYTE    flag: ???
  864.  08h    BYTE    flag: "em_assigned"
  865.  09h    BYTE    flag: emulated EMS
  866.  0Ah    BYTE    single sector bonus
  867.  0Bh    BYTE    "sticky_max"
  868.  0Ch    BYTE    write sector bonus
  869.  0Dh    BYTE    bonus threshold
  870.  0Eh    WORD    flush interval
  871.  10h    WORD    flush count
  872.  12h    WORD    reserve pool size
  873.  14h    WORD    remaining space in reserve pool
  874.  16h    WORD    required free memory
  875.  18h    WORD    total cache sectors
  876.  1Ah    WORD    dirty cache sectors
  877.  1Ch    BYTE    trace buffer size
  878.  1Dh    BYTE    reserved (padding)
  879. SeeAlso: #0180
  880.  
  881. Format of QUICKCACHE II drive info [16-element array, one element]:
  882. Offset    Size    Description    (Table 0180)
  883.  00h    BYTE    DOS drive number
  884.  01h    BYTE    BIOS drive number
  885.  02h    BYTE    maximum sector number
  886.  03h    BYTE    maximum head number
  887.  04h    BYTE    read buffer size
  888.  05h    BYTE    write buffer size
  889.  06h    BYTE    last status
  890.  07h    BYTE    flag: enabled
  891.  08h    BYTE    flag: buffered write enabled
  892.  09h    BYTE    flag: buffered read enabled
  893.  0Ah    BYTE    flag: in use (drive info is valid)
  894.  0Bh    BYTE    flag: cylinder flush
  895.  0Ch    BYTE    reserved (padding)
  896.  0Dh    BYTE    sectors per track
  897.  0Eh    WORD    sector size
  898.  10h    WORD    sectors assigned
  899.  12h    WORD    dirty sectors
  900.  14h    WORD    reserved sectors
  901.  16h    WORD    number of read errors
  902.  18h    WORD    number of write errors
  903.  1Ah    DWORD    "rio_count"
  904.  1Eh    DWORD    number of cache misses
  905.  22h    DWORD    "wio_count"
  906.  26h    DWORD    "dio_count"
  907. SeeAlso: #0179
  908. --------c-1331-------------------------------
  909. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  910.     AH = 31h
  911.     BX = number of paragraphs of conventional memory to reserve for apps
  912. Return: AX = status (0000h successful)
  913. --------c-1332-------------------------------
  914. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  915.     AH = 32h
  916.     AL = drive number (00h=A:)
  917. Return: AX = status (0000h successful)
  918. SeeAlso: AH=22h"QUICKCACHE",AH=33h
  919. --------c-1333-------------------------------
  920. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  921.     AH = 33h
  922.     AL = drive number (00h=A:)
  923. Return: AX = status (0000h successful)
  924. SeeAlso: AH=22h"QUICKCACHE",AH=32h
  925. --------c-1334-------------------------------
  926. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  927.     AH = 34h
  928.     AL = function
  929.         00h end sector locking/unlocking
  930.         01h lock all accessed sectors into cache
  931.         02h unlock all accessed sectors and discard from cache
  932. Return: AX = status (0000h successful)
  933. SeeAlso: AH=20h"QUICKCACHE",AH=35h
  934. --------c-1335-------------------------------
  935. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  936.     AH = 35h
  937.     BX = number of sectors in lock pool
  938. Return: AX = status (0000h successful)
  939. Desc:    specify the number of cache sector buffers which may be dedicated to
  940.       data locked into the cache
  941. SeeAlso: AH=34h
  942. --------c-1336-------------------------------
  943. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  944.     AH = 36h
  945.     AL = new size of trace buffer
  946. Return: AX = status (0000h successful)
  947. Note:    called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
  948. SeeAlso: AH=24h"QUICKCACHE"
  949. --------c-1337-------------------------------
  950. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  951.     AH = 37h
  952.     AL = new state (00h disabled, else enabled)
  953.     DL = drive number (00h = A:)
  954. Return: AX = status (0000h successful)
  955. SeeAlso: AH=2Dh,AH=38h
  956. --------c-1338-------------------------------
  957. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  958.     AH = 38h
  959.     AL = new state (00h disabled, else enabled)
  960.     DL = drive number (00h = A:)
  961. Return: AX = status (0000h successful)
  962. SeeAlso: AH=2Ch,AH=37h
  963. --------c-1339-------------------------------
  964. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  965.     AH = 39h
  966.     AL = new size of read buffer
  967.     DL = drive number (00h = A:)
  968. Return: AX = status (0000h successful)
  969. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  970.       Associates, Inc.
  971. SeeAlso: AH=2Ah,AH=3Ah
  972. --------c-133A-------------------------------
  973. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  974.     AH = 3Ah
  975.     AL = new size of write buffer
  976.     DL = drive number (00h = A:)
  977. Return: AX = status (0000h successful)
  978. SeeAlso: AH=2Ah,AH=39h
  979. --------c-133B-------------------------------
  980. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  981.     AH = 3Bh
  982.     AL = new state of ??? (01h enabled, else disabled)
  983. Return: AX = status (0000h successful)
  984. Note:    is affected by the flag reported at offset 05h of the system info
  985.       returned by AH=30h, and sets the flag at offset 06h
  986. SeeAlso: AH=3Ch
  987. --------c-133C-------------------------------
  988. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  989.     AH = 3Ch
  990.     AL = new state of ??? (01h enabled, else disabled)
  991. Return: AX = status (0000h successful)
  992. Note:    is affected by the flag reported at offset 05h of the system info
  993.       returned by AH=30h, and sets the flag at offset 07h
  994. SeeAlso: AH=3Bh
  995. --------c-133D-------------------------------
  996. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  997.     AH = 3Dh
  998.     AL = new state (01h enabled, else disabled)
  999.     DL = drive number (00h = A:)
  1000. Return: AX = status (0000h successful)
  1001. --------c-133E-------------------------------
  1002. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  1003.     AH = 3Eh
  1004.     AL = new value for bonus
  1005. Return: AX = status (0000h successful)
  1006. Desc:    specify the bonus score to give to single-sector transfers in order to
  1007.       keep those sectors in the cache longer
  1008. --------c-133F-------------------------------
  1009. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  1010.     AH = 3Fh
  1011.     AL = new value for bonus threshold
  1012. Return: AX = status (0000h successful)
  1013. --------c-1340-------------------------------
  1014. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  1015.     AH = 40h
  1016.     AL = new value for "sticky_max"
  1017. Return: AX = status (0000h successful)
  1018. SeeAlso: AH=41h"QUICKCACHE"
  1019. --------d-1341--BX55AA-----------------------
  1020. INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
  1021.     AH = 41h
  1022.     BX = 55AAh
  1023.     DL = drive (80h-FFh)
  1024. Return: CF set on error (not supported)
  1025.         AH = 01h (invalid function)
  1026.     CF clear if successful
  1027.         BX = AA55h if installed
  1028.         AH = major version of extensions
  1029.         (01h = 1.x, 20h = 2.0/EDD-1.0, 21h = 2.1/EDD-1.1)
  1030.         AL = internal use
  1031.         CX = API subset support bitmap (see #0181)
  1032.         DH = extension version (v2.0+ ??? -- not present in 1.x)
  1033. Note:    the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
  1034.       the INT 13 Extensions API
  1035. SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
  1036.  
  1037. Bitfields for IBM/MS INT 13 Extensions API support bitmap:
  1038. Bit(s)    Description    (Table 0181)
  1039.  0    extended disk access functions (AH=42h-44h,47h,48h) supported
  1040.  1    removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
  1041.       supported
  1042.  2    enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
  1043.     extended drive parameter table is valid (see #0183,#0186)
  1044.  3-15    reserved (0)
  1045. --------c-1341-------------------------------
  1046. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  1047.     AH = 41h
  1048.     AL = direction
  1049.         01h save to file
  1050.         else restore from file
  1051.     ES:DI -> 1024-byte buffer for ???
  1052. Return: AX = status (0000h successful, 8000h failed)
  1053. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  1054.       Associates, Inc.
  1055. SeeAlso: AH=40h"QUICKCACHE"
  1056. --------d-1342-------------------------------
  1057. INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
  1058.     AH = 42h
  1059.     DL = drive number
  1060.     DS:SI -> disk address packet (see #0182)
  1061. Return: CF clear if successful
  1062.         AH = 00h
  1063.     CF set on error
  1064.         AH = error code (see #0144)
  1065.         disk address packet's block count field set to number of blocks
  1066.           successfully transferred
  1067. SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
  1068.  
  1069. Format of disk address packet:
  1070. Offset    Size    Description    (Table 0182)
  1071.  00h    BYTE    10h (size of packet)
  1072.  01h    BYTE    reserved (0)
  1073.  02h    WORD    number of blocks to transfer (max 007Fh for Phoenix EDD)
  1074.  04h    DWORD    -> transfer buffer
  1075.  08h    QWORD    starting absolute block number
  1076.         (for non-LBA devices, compute as
  1077.           (Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
  1078.           SelectedSector - 1
  1079. --------N-134257DX1234-----------------------
  1080. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  1081.     AX = 4257h ("BW")
  1082.     DX = 1234h
  1083. Return: BX = 414Ch if installed
  1084. Program: BWLPD is the printer daemon from the BW-NFS package
  1085. SeeAlso: INT 62/AH=00h"ETHDEV"
  1086. --------d-1343-------------------------------
  1087. INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
  1088.     AH = 43h
  1089.     AL = write flags
  1090.        ---v1.0,2.0---
  1091.        bit 0: verify write
  1092.        bits 7-1 reserved (0)
  1093.        ---v2.1---
  1094.        00h,01h write without verify
  1095.        02h write with verify
  1096.     DL = drive number
  1097.     DS:SI -> disk address packet (see #0182)
  1098. Return: CF clear if successful
  1099.         AH = 00h
  1100.     CF set on error
  1101.         AH = error code (see #0144)
  1102.         disk address packet's block count field set to number of blocks
  1103.           successfully transferred
  1104. Note:    the BIOS returns CF set/AH=01h (invalid function) if verify is
  1105.       requested but not supported
  1106. SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
  1107. --------d-1344-------------------------------
  1108. INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
  1109.     AH = 44h
  1110.     DL = drive number
  1111.     DS:SI -> disk address packet (see #0182)
  1112. Return: CF clear if successful
  1113.         AH = 00h
  1114.     CF set on error
  1115.         AH = error code (see #0144)
  1116.         disk address packet's block count field set to number of blocks
  1117.           successfully verified
  1118. SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
  1119. --------d-1345-------------------------------
  1120. INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
  1121.     AH = 45h
  1122.     AL = operation
  1123.         00h lock media in drive
  1124.         01h unlock media
  1125.         02h check lock status
  1126.     DL = drive number
  1127. Return: CF clear if successful
  1128.         AH = 00h
  1129.         AL = lock state (00h = unlocked)
  1130.     CF set on error
  1131.         AH = error code (see #0144)
  1132. Notes:    this function is required to be supported for any removable drives
  1133.       numbered 80h or higher
  1134.     up to 255 locks may be placed on a drive, and the media will not
  1135.       be physically unlocked until all locks have been removed
  1136. SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"
  1137. --------d-1346-------------------------------
  1138. INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
  1139.     AH = 46h
  1140.     AL = 00h (reserved)
  1141.     DL = drive number
  1142. Return: CF clear if successful
  1143.         AH = 00h
  1144.     CF set on error
  1145.         AH = error code (see #0144)
  1146. SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"
  1147. --------d-1347-------------------------------
  1148. INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
  1149.     AH = 47h
  1150.     DL = drive number
  1151.     DS:SI -> disk address packet (see #0182)
  1152. Return: CF clear if successful
  1153.         AH = 00h
  1154.     CF set on error
  1155.         AH = error code (see #0144)
  1156. SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
  1157. --------d-1348-------------------------------
  1158. INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
  1159.     AH = 48h
  1160.     DL = drive (80h-FFh)
  1161.     DS:SI -> buffer for drive parameters (see #0183)
  1162. Return: CF clear if successful
  1163.         AH = 00h
  1164.         DS:SI buffer filled
  1165.     CF set on error
  1166.         AH = error code (see #0144)
  1167. SeeAlso: AH=08h,AH=41h,AH=49h
  1168.  
  1169. Format of IBM/MS INT 13 Extensions drive parameters:
  1170. Offset    Size    Description    (Table 0183)
  1171.  00h    WORD    (call) size of buffer (001Ah for v1.x, 001Eh for v2.x)
  1172.         (ret) size of returned data
  1173.  02h    WORD    information flags (see #0184)
  1174.  04h    DWORD    number of physical cylinders on drive
  1175.  08h    DWORD    number of physical heads on drive
  1176.  0Ch    DWORD    number of physical sectors per track
  1177.  10h    QWORD    total number of sectors on drive
  1178.  18h    WORD    bytes per sector
  1179. ---v2.0+ ---
  1180.  1Ah    DWORD    -> EDD configuration parameters (see #0186)
  1181.         FFFFh:FFFFh if not available
  1182. Note:    if the size is less than 30 on call, the final DWORD will not be
  1183.       returned by a v2.x implementation
  1184. SeeAlso: #0185,#2451
  1185.  
  1186. Bitfields for IBM/MS INT 13 Extensions information flags:
  1187. Bit(s)    Description    (Table 0184)
  1188.  0    DMA boundary errors handled transparently
  1189.  1    cylinder/head/sectors-per-track information is valid
  1190.  2    removable drive
  1191.  3    write with verify supported
  1192.  4    drive has change-line support (required if drive >= 80h is removable)
  1193.  5    drive can be locked (required if drive >= 80h is removable)
  1194.  6    CHS information set to maximum supported values, not current media
  1195.  15-7    reserved (0)
  1196. SeeAlso: #0183
  1197.  
  1198. Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
  1199. Offset    Size    Description    (Table 0185)
  1200.  00h    WORD    number of cylinders
  1201.  02h    BYTE    number of heads
  1202.  03h    BYTE    A0h (signature indicating translated table)
  1203.  04h    BYTE    number of physical sectors per track
  1204.  05h    WORD    starting write precompensation cylinder number
  1205.  07h    BYTE    reserved
  1206.  08h    BYTE    control byte (see #2453 at INT 41"DISK 0")
  1207.  09h    WORD    number of physical cylinders
  1208.  0Bh    BYTE    number of physical heads
  1209.  0Ch    WORD    cylinder number of landing zone
  1210.  0Eh    BYTE    number of logical sectors per track
  1211.  0Fh    BYTE    checksum
  1212. Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
  1213.       IBM/MS INT 13 extensions
  1214. SeeAlso: #0186,#2451
  1215.  
  1216. Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table:
  1217. Offset    Size    Description    (Table 0186)
  1218.  00h    WORD    physical I/O port base address
  1219.  02h    WORD    disk-drive control port address
  1220.  04h    BYTE    drive flags (see #0187)
  1221.  05h    BYTE    proprietary information
  1222.         bits 7-4 reserved (0)
  1223.         bits 3-0: Phoenix proprietary (used by BIOS)
  1224.  06h    BYTE    IRQ (bits 3-0; bits 7-4 reserved and must be 0)
  1225.  07h    BYTE    sector count for multi-sector transfers
  1226.  08h    BYTE    DMA control
  1227.         bits 7-4: DMA type (0-2) as per ATA-2 specification
  1228.         bits 3-0: DMA channel
  1229.  09h    BYTE    programmed I/O control
  1230.         bits 7-4: reserved (0)
  1231.         bits 3-0: PIO type (1-4) as per ATA-2 specification
  1232.  0Ah    WORD    drive options (see #0188)
  1233.  0Ch  2 BYTEs    reserved (0)
  1234.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  1235.         (currently 10h for v1.0 and 11h for v1.1)
  1236.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  1237.         8-bit sum of all bytes 00h-0Fh should equal 00h
  1238. SeeAlso: #0185
  1239.  
  1240. Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
  1241. Bit(s)    Description    (Table 0187)
  1242.  7    reserved (1)
  1243.  6    LBA enabled
  1244.  5    reserved (1)
  1245.  4    drive is slave
  1246.  3-0    reserved (0)
  1247. SeeAlso: #0186,#0188
  1248.  
  1249. Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
  1250. Bit(s)    Description    (Table 0188)
  1251.  0    fast PIO enabled
  1252.  1    fast DMA access enabled
  1253.  2    block PIO (multi-sector transfers) enabled
  1254.  3    CHS translation enabled
  1255.  4    LBA translation enabled
  1256.  5    removable media
  1257.  6    ATAPI device (CD-ROM)
  1258.  7    32-bit transfer mode
  1259. ---v1.1---
  1260.  8    ATAPI device uses DRQ to signal readiness for packet command
  1261.     (must be 0 if bit 6 is 0)
  1262.  10-9    translation type (must be 00 if bit 3 is 0)
  1263.     00 Phoenix bit-shifting translation
  1264.     01 LBA-assisted translation
  1265.     10 reserved
  1266.     11 proprietary translation
  1267.  15-8    reserved
  1268. SeeAlso: #0186,#0187
  1269. --------d-1349-------------------------------
  1270. INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
  1271.     AH = 49h
  1272.     DL = drive number
  1273. Return: CF clear if media has not changed
  1274.         AH = 00h
  1275.     CF set if media may have changed
  1276.         AH = 06h (see #0144)
  1277. Note:    unlike AH=16h, any drive number may be specified
  1278. SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
  1279. --------d-134A-------------------------------
  1280. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
  1281.     AH = 4Ah
  1282.     AL = 00h
  1283.     DS:SI -> specification packet (see #0189)
  1284. Return: CF clear if successful
  1285.     CF set on error (drive will not be in emulation mode)
  1286.     AX = return codes
  1287. SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh
  1288.  
  1289. Format of Bootable CD-ROM Specification Packet:
  1290. Offset    Size    Description    (Table 0189)
  1291.  00h    BYTE    size of packet in bytes (13h)
  1292.  01h    BYTE    boot media type (see #0190)
  1293.  02h    BYTE    drive number
  1294.         (00h floppy image, 80h bootable hard disk, 81h-FFh nonbootable)
  1295.  03h    BYTE    CD-ROM controller number
  1296.  04h    DWORD    Logical Block Address of disk image to emulate
  1297.  08h    WORD    device specification (see also #0190)
  1298.         (IDE) bit 0: drive is slave instead of master
  1299.         (SCSI)    bits 7-0: LUN and PUN
  1300.             bits 15-8: bus number
  1301.  0Ah    WORD    segment of 3K buffer for caching CD-ROM reads
  1302.  0Ch    WORD    load segment for initial boot image
  1303.         if 0000h, load at segment 07C0h
  1304.  0Eh    WORD    number of 512-byte virtual sectors to load
  1305.         (only valid for AH=4Ch)
  1306.  10h    BYTE    low byte of cylinder count (for INT 13/AH=08h)
  1307.  11h    BYTE    sector count, high bits of cylinder count (for INT 13/AH=08h)
  1308.  12h    BYTE    head count (for INT 13/AH=08h)
  1309. SeeAlso: #0191,AH=08h
  1310.  
  1311. Bitfields for Bootable CD-ROM boot media type:
  1312. Bit(s)    Description    (Table 0190)
  1313.  3-0    media type
  1314.     0000 no emulation
  1315.     0001 1.2M diskette
  1316.     0010 1.44M diskette
  1317.     0011 2.88M diskette
  1318.     0100 hard disk (drive C:)
  1319.     other reserved
  1320.  5-4    reserved (0)
  1321.  6    image contains ATAPI driver
  1322.  7    image contains SCSI driver(s)
  1323. SeeAlso: #0189
  1324. --------d-134B00-----------------------------
  1325. INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
  1326.     AX = 4B00h
  1327.     DL = drive number or 7Fh to terminate all emulations
  1328.     DS:SI -> empty specification packet (see #0189)
  1329. Return: CF clear if successful
  1330.     CF set on error (drive will still be in emulation mode)
  1331.     AX = return codes
  1332.     DS:SI specification packet filled
  1333. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  1334. --------d-134B01-----------------------------
  1335. INT 13 - Bootable CD-ROM - GET STATUS
  1336.     AX = 4B01h
  1337.     DL = drive number or 7Fh to terminate all emulations
  1338.     DS:SI -> empty specification packet (see #0189)
  1339. Return: CF clear if successful
  1340.     CF set on error
  1341.     AX = return codes
  1342.     DS:SI specification packet filled
  1343. Note:    same as AX=4B00h, but does not terminate emulation
  1344. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  1345. --------d-134C-------------------------------
  1346. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
  1347.     AH = 4Ch
  1348.     AL = 00h
  1349.     DS:SI -> specification packet (see #0189)
  1350. Return: never, if successful
  1351.     CF set (error while attempting to boot)
  1352.     AX = error codes
  1353. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh
  1354. --------d-134D00-----------------------------
  1355. INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
  1356.     AX = 4D00h
  1357.     DS:SI -> command packet (see #0191)
  1358. Return: CF clear if successful
  1359.     CF set on error
  1360.     AX = return codes
  1361. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch
  1362.  
  1363. Format of Bootable CD-ROM "get boot catalog" command packet:
  1364. Offset    Size    Description    (Table 0191)
  1365.  00h    BYTE    size of packet in bytes (08h)
  1366.  01h    BYTE    number of sectors of boot catalog to read
  1367.  02h    DWORD    -> buffer for boot catalog
  1368.  06h    WORD    first sector in boot catalog to transfer
  1369. SeeAlso: #0189
  1370. --------d-134E-------------------------------
  1371. INT 13 - IBM/MS INT 13 Extensions v2.1 - SET HARDWARE CONFIGURATION
  1372.     AH = 4Eh
  1373.     AL = function
  1374.         00h enable prefetch
  1375.         01h disable prefetch
  1376.         02h set maximum PIO transfer mode
  1377.         03h set PIO mode 0
  1378.         04h set default PIO transfer mode
  1379.         05h enable INT 13 DMA maximum mode
  1380.         06h disable INT 13 DMA
  1381.     DL = drive number
  1382. Return: CF clear if successful
  1383.         AH = 00h
  1384.         AL = status
  1385.         00h command was safe (only affected specified drive)
  1386.         01h other devices are affected
  1387.     CF set on error
  1388.         AH = error code (see #0144)
  1389. Note:    DMA and PIO modes are mutually exclusive, so selecting DMA disables
  1390.       PIO (for either the specified device or all devices on that
  1391.       controller), and selecting PIO disables DMA
  1392. SeeAlso: AH=41h"INT 13 Extensions"
  1393. --------v-135001------------------------
  1394. INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
  1395.     AX = 5001h
  1396. Return: AX = 0150h if resident
  1397. SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
  1398. --------v-135342CX0001-----------------------
  1399. INT 13 - ScanBoot - INSTALLATION CHECK
  1400.     AX = 5342h ("SB")
  1401.     CX = 0001h
  1402.     DX = 0000h
  1403. Return: CF clear if ScanBoot installed
  1404.        AX = 0000h
  1405.        CX = serial number ("SW" if shareware release)
  1406.        DX = version
  1407.        BX,SI,ES destroyed
  1408. Program: ScanBoot is a virus-detection TSR by PanSoft
  1409. --------d-135501-----------------------------
  1410. INT 13 - Seagate ST01/ST02 - Inquiry
  1411.     AX = 5501h
  1412.     DH = number of bytes to transfer
  1413.     DL = drive ID (80h, 81h, ...)
  1414.     ES:BX -> buffer for results
  1415. Return: ES:BX buffer filled with the Inquiry results
  1416. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  1417.       so all commands must be assumed to have been successful
  1418.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  1419.       drives without changing the BIOS drive count at 0040h:0075h
  1420.     this command is identical to the SCSI Inquiry command
  1421. --------d-135502-----------------------------
  1422. INT 13 - Seagate ST01/ST02 - RESERVED
  1423.     AX = 5502h
  1424. --------d-135503-----------------------------
  1425. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  1426.     AX = 5503h
  1427.     DH = DTQ byte (see #0192)
  1428.     DL = drive ID (80h, 81h, ...)
  1429. Return: nothing
  1430.  
  1431. Bitfields for DTQ byte:
  1432. Bit(s)    Description    (Table 0192)
  1433.  7    reserved
  1434.  6    SCSI drive attached
  1435.  5    reserved
  1436.  4    selected drive is ST225N/NP (Paired)
  1437.  3    selected drive is ST225N
  1438.  2    Host Adapter checks parity on the selected drive
  1439.  1    selected drive has been installed
  1440.  0    Seagate installation software present
  1441. --------d-135504-----------------------------
  1442. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  1443.     AX = 5504h
  1444.     DX = drive (bit 7 set for hard disk)
  1445. Return: CF clear if successful
  1446.         AX = 4321h if ST01/ST02h
  1447.         AX = 4322h if ??? Seagate controller
  1448.     CF set on error
  1449. SeeAlso: AX=5505h,AX=5514h
  1450. --------d-135504-----------------------------
  1451. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  1452.     AX = 5504h
  1453.     DL = drive ID (80h, 81h, ...)
  1454. Return: AX = 4321h
  1455.     BL = selected drive number (00h, 01h)
  1456.     BH = number of drives attached to Host Adapter (max. 2)
  1457. --------d-135505-----------------------------
  1458. INT 13 - Seagate - ??? - PARK HEADS
  1459.     AX = 5505h
  1460.     DX = drive (bit 7 set for hard disk)
  1461. Return: CF clear if successful
  1462.     CF set on error
  1463. SeeAlso: AX=5504h,AX=5515h
  1464. --------d-135505-----------------------------
  1465. INT 13 - Seagate ST01/ST02 - PARK HEADS
  1466.     AX = 5505h
  1467.     DL = drive ID (80h, 81h, ...)
  1468.     DH = subfunction
  1469.         00h park heads (SCSI Stop command)
  1470.         01h un-park heads (SCSI Start command)
  1471. Return: nothing
  1472. --------d-135506-----------------------------
  1473. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  1474.     AX = 5506h
  1475.     DL = drive ID (80h, 81h, ...)
  1476.     DH = subfunction
  1477.         00h disable parity check
  1478.         01h enable parity check
  1479.         02h return current parity setting
  1480. Return: AL = status
  1481.         00h parity checking disabled
  1482.         01h parity checking enabled
  1483. --------d-135507-----------------------------
  1484. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  1485.     AX = 5507h to 550Dh
  1486. Note:    officially listed as "reserved"
  1487. --------d-135514-----------------------------
  1488. INT 13 U - Seagate - ???
  1489.     AX = 5514h
  1490.     DX = drive (bit 7 set for hard disk)
  1491. Return: CF clear if successful
  1492.     CF set on error
  1493.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  1494. SeeAlso: AX=5504h,AX=5515h
  1495. --------d-135515-----------------------------
  1496. INT 13 U - Seagate - PARK HEADS???
  1497.     AX = 5515h
  1498.     DX = drive (bit 7 set for hard disk)
  1499. Return: CF clear if successful
  1500.     CF set on error
  1501. Note:    appears to be identical to AX=5505h
  1502. SeeAlso: AX=5504h,AX=5505h
  1503. --------d-1359-------------------------------
  1504. INT 13 - SyQuest - Generic SCSI pass through
  1505.     AH = 59h
  1506.     CX = HOST_ID, 0-based
  1507.     DX = 80h
  1508.     ES:BX pointer to SCSI structure (see #0193)
  1509. Return: CF clear
  1510.     AH = 95h
  1511. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  1512.  
  1513. Format of SyQuest SCSI structure:
  1514. Offset    Size    Description    (Table 0193)
  1515.  00h    WORD    opcode (see #0194)
  1516.  02h    BYTE    target's SCSI ID
  1517.  03h    BYTE    target's logical unit number
  1518.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  1519.  05h    BYTE    host status
  1520.         00h successful
  1521.         01h selection time out
  1522.         02h data over-run or under-run
  1523.  06h    BYTE    target status at command completion
  1524.         00h successful
  1525.         02h check status
  1526.         08h busy
  1527.  07h    BYTE    command data block length
  1528.  08h    DWORD    request data length
  1529.  0Ch    DWORD    result data length (actual length of data transferred)
  1530.  10h    DWORD    -> CDB (see #3303,#3304,#3305)
  1531.  14h    DWORD    -> data buffer
  1532. Note:    The handler does not perform a 'Request Sense' command if there was an
  1533.       error
  1534.  
  1535. (Table 0194)
  1536. Values for SCSI opcode:
  1537.  00h    verify interface
  1538.     clears carry flag and returns if function is available
  1539.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of
  1540.     length less than 40 byte including the terminator.
  1541.     The string is stored in the buffer pointed by p_buf.
  1542.  02h    device mapping info. The caller provides a one byte buffer.
  1543.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  1544.     It stores 0 if that target does not exists.
  1545.  03h    execute SCSI command
  1546.  04h    device reset
  1547.  05h    SCSI bus reset
  1548. SeeAlso: #0193
  1549. --------d-1370-------------------------------
  1550. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  1551.     AH = 70h
  1552.     ???
  1553. Return: ???
  1554. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  1555.       formatting program) make this call, presumably to EDVR.SYS (the
  1556.       partitioning driver)
  1557. SeeAlso: AH=ADh
  1558. ----------1375-------------------------------
  1559. INT 13 - ???
  1560.     AH = 75h
  1561.     ???
  1562. Return: AH = ???
  1563.     ???
  1564. Note:    intercepted by PC-Cache (v5.1 only)
  1565. ----------1376-------------------------------
  1566. INT 13 - ???
  1567.     AH = 76h
  1568.     ???
  1569. Return: AH = ???
  1570.     ???
  1571. Note:    intercepted by PC-Cache (v5.1 only)
  1572. --------c-137B00-----------------------------
  1573. INT 13 - NOW! v3.05 - GET INFORMATION
  1574.     AX = 7B00h
  1575.     CX:DX -> 1F8h-byte buffer for information record (see #0195)
  1576. Return: AX = 0000h
  1577.     BX = segment of main resident code
  1578.     ES = ???
  1579. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  1580. SeeAlso: AX=7B02h,AH=EFh
  1581.  
  1582. Format of NOW! information record:
  1583. Offset    Size    Description    (Table 0195)
  1584.  00h 80 BYTEs    name of directory from which NOW! was started
  1585.  50h 424 BYTEs    ???
  1586.  81h  ? BYTEs    array of bytes for ???
  1587.  F7h 250 BYTEs    array of 25 entries, one per drive???
  1588.     Offset    Size    Description
  1589.      00h  2 BYTEs    ???
  1590.      02h    WORD    ???
  1591.      04h    WORD    ???
  1592.      06h  4 BYTEs    ???
  1593. 1F1h  7 BYTEs    ???
  1594. --------c-137B01-----------------------------
  1595. INT 13 - NOW! v3.05 - ???
  1596.     AX = 7B01h
  1597. Return: DX = segment of ???
  1598. SeeAlso: AX=7B00h
  1599. --------c-137B02-----------------------------
  1600. INT 13 - NOW! v3.05 - SET INFORMATION
  1601.     AX = 7B02h
  1602.     BX = segment of ??? (10h above a PSP)
  1603.     CX:DX -> 1F8h-byte information record (see #0195)
  1604. Return: ???
  1605. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  1606. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  1607.       BX
  1608. SeeAlso: AX=7B00h
  1609. --------c-137B03-----------------------------
  1610. INT 13 - NOW! v3.05 - ???
  1611.     AX = 7B03h
  1612.     ???
  1613. Return: ???
  1614. SeeAlso: AX=7B00h,AX=7B04h
  1615. --------c-137B04-----------------------------
  1616. INT 13 - NOW! v3.05 - ???
  1617.     AX = 7B04h
  1618.     ???
  1619. Return: ???
  1620. SeeAlso: AX=7B03h
  1621. --------c-137B05-----------------------------
  1622. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  1623.     AX = 7B05h
  1624. Return: BX:AX = number of physical accesses???
  1625.     DX:CX = total disk accesses???
  1626. SeeAlso: AX=7B00h,AX=7B06h
  1627. --------c-137B06-----------------------------
  1628. INT 13 - NOW! v3.05 - GET ???
  1629.     AX = 7B06h
  1630.     BX = ???
  1631. Return: AX = 0000h
  1632.     BX = ???
  1633. SeeAlso: AX=7B05h,AX=7B07h
  1634. --------c-137B07-----------------------------
  1635. INT 13 - NOW! v3.05 - GET ???
  1636.     AX = 7B07h
  1637. Return: AX = ???
  1638.     BX = ???
  1639.     CX = ???
  1640.     DX = ???
  1641. SeeAlso: AX=7B06h
  1642. --------c-137B08-----------------------------
  1643. INT 13 - NOW! v3.05 - ???
  1644.     AX = 7B08h
  1645.     CX = ??? (default 00h)
  1646. Return: ???
  1647. SeeAlso: AX=7B00h
  1648. --------c-1380--CX6572-----------------------
  1649. INT 13 - FAST! v4.02+ - API
  1650.     AH = 80h
  1651.     CX = 6572h
  1652.     DX = 1970h
  1653.     ES:BX -> request packet (see #0197)
  1654.     AL = function number (see #0196)
  1655. Return: AH = status (except function 06h)
  1656.         00h if successful
  1657.         01h invalid function
  1658.         05h not supported by the installed variant
  1659.     CF clear if successful
  1660.     CF set on error
  1661.     AL may be destroyed
  1662. Program: FAST! is a disk cache by Future Computing Systems and marketed by
  1663.       BLOC Publishing Corp.
  1664. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  1665. Index:    hotkeys;FAST!
  1666.  
  1667. (Table 0196)
  1668. Values for FAST! function:
  1669.  01h    get cache information (see AX=8001h)
  1670.  04h    disable cache
  1671.  05h    enable cache and reset statistics
  1672.  06h    installation check (see AX=8006h)
  1673.  07h    unhook interrupts (see AX=8007h)
  1674.  09h    flush cache
  1675.  0Ah    (v4.02+) enable staged writes
  1676.  0Bh    (v4.02+) disable staged writes
  1677.  0Ch    (v4.02+) enable beep on flush
  1678.  0Dh    (v4.02+) disable beep on flush
  1679.  0Eh    ???
  1680.  0Fh    ???
  1681.  10h    (v4.12+) enable hotkeys
  1682.  11h    (v4.12+) disable hotkeys
  1683.  12h    (v4.13+) set idle delay
  1684.  13h    (v4.13+) set flush dirty percentage
  1685.  14h    (v5.00+) enable mouse checks
  1686.  15h    (v5.00+) disable mouse checks
  1687.  16h    (v5.00d+) reduce cache size to minimum
  1688.  17h    (v5.00d+) increase cache size to maximum
  1689.  
  1690. Format of FAST! request packet:
  1691. Offset    Size    Description    (Table 0197)
  1692.  00h    DWORD    pointer to 19-byte signature string (see #0198)
  1693.  04h    DWORD    pointer to buffer for data (if needed by function)
  1694.  
  1695. (Table 0198)
  1696. Values for FAST! v4.04-v5.03 signature string:
  1697.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  1698. --------c-138001CX6572-----------------------
  1699. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  1700.     AX = 8001h
  1701.     CX = 6572h
  1702.     DX = 1970h
  1703.     ES:BX -> request packet (see #0199)
  1704. Return: AH = 00h if successful
  1705. SeeAlso: AH=80h,AX=8006h
  1706.  
  1707. Format of FAST! request packet:
  1708. Offset    Size    Description    (Table 0199)
  1709.  00h    DWORD    -> 19-byte signature string (see #0198)
  1710.  04h    DWORD    -> buffer for cache information (see #0200)
  1711.  
  1712. Format of FAST! cache information (v5.00-5.03):
  1713. Offset    Size    Description    (Table 0200)
  1714.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  1715.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  1716.  03h    BYTE    FAST! variant
  1717.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  1718.  04h    DWORD    total number of read requests
  1719.  08h    DWORD    number of physical disk reads
  1720.  0Ch    DWORD    grabbed hash buckets
  1721.  10h    DWORD    "st_386mem"
  1722.  14h    DWORD    total number of writes (only counted when staging enabled)
  1723.  18h    DWORD    number of physical disk writes (only when staging enabled)
  1724.  1Ch    DWORD    number of write errors while flushing cache
  1725.  20h    WORD    flags1 (see #0201)
  1726.  22h    WORD    flags
  1727.         bit 0: ???
  1728.         bit 1: staged writes enabled
  1729.  24h    WORD    ???
  1730.  26h    WORD    maximum cache size in KB
  1731.  28h    WORD    minimum cache size in KB
  1732.  2Ah    WORD    segment of first cache buffer (FASTC)
  1733.         segment of EMS page frame (FASTE)
  1734.         XMS handle (FASTX XMS)
  1735.  2Ch    WORD    number of hash buckets containing no entries
  1736.  2Eh    WORD    number of hash buckets containing one entry
  1737.  30h    WORD    number of hash buckets containing two entries
  1738.  32h    WORD    number of hash buckets containing three entries
  1739.  34h    WORD    number of hash buckets containing four entries
  1740.  36h    WORD    number of hash buckets containing five entries
  1741.  38h    WORD    maximum contiguous sectors
  1742.  3Ah    WORD    hash factor
  1743.  3Ch    WORD    number of paragraphs of memory used below 1M
  1744.  3Eh    WORD    entries per hash bucket
  1745.  40h    WORD    idle delay in seconds
  1746.  42h  2 BYTEs    ???
  1747.  44h    WORD    staged write threshold percentage
  1748.  46h  2 BYTEs    ???
  1749.  48h    WORD    number of dirty sectors
  1750.  4Ah    WORD    number of staged write buffers
  1751.  4Ch    WORD    current cache size in KB
  1752.  4Eh    WORD    beep frequency in Hz
  1753.  50h    WORD    ???
  1754.  52h    WORD    ???
  1755.  
  1756. Bitfields for FAST! flags1:
  1757. Bit(s)    Description    (Table 0201)
  1758.  0    beep on flush
  1759.  3    hotkeys enabled
  1760.  4    mouse idle check enabled
  1761.  8    caching enabled
  1762.  13    ???
  1763. --------c-138006CX6572-----------------------
  1764. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  1765.     AX = 8006h
  1766.     CX = 6572h
  1767.     DX = 1970h
  1768.     ES:BX -> request packet (see #0202)
  1769. Return: AX = 1965h if installed
  1770. SeeAlso: AH=80h,AX=8001h,AX=8007h
  1771.  
  1772. Format of FAST! request packet:
  1773. Offset    Size    Description    (Table 0202)
  1774.  00h    DWORD    -> 19-byte signature string (see #0198)
  1775. --------c-138007CX6572-----------------------
  1776. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  1777.     AX = 8007h
  1778.     CX = 6572h
  1779.     DX = 1970h
  1780.     ES:BX -> request packet (see #0203)
  1781. Return: AX = 1965h if installed
  1782. SeeAlso: AH=80h,AX=8006h
  1783. Index:    uninstall;FAST!
  1784.  
  1785. Format of FAST! request packet:
  1786. Offset    Size    Description    (Table 0203)
  1787.  00h    DWORD    -> 19-byte signature string (see #0198)
  1788. --------c-1381--SI4358-----------------------
  1789. INT 13 - Super PC-Kwik v3.20+ - ???
  1790.     AH = 81h
  1791.     SI = 4358h
  1792.     ???
  1793. Return: ???
  1794. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1795.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  1796.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  1797.     returns immediately in PC-Cache v5.x
  1798. Index:    PC-Cache|Qualitas Qcache
  1799. --------c-1382--SI4358-----------------------
  1800. INT 13 - Super PC-Kwik v3.20+ - ???
  1801.     AH = 82h
  1802.     SI = 4358h
  1803.     ???
  1804. Return: AL = ???
  1805. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1806.       Super PC-Kwik, and thus support this call
  1807. SeeAlso: AH=84h
  1808. Index:    PC-Cache|Qualitas Qcache
  1809. --------c-1383--SI4358-----------------------
  1810. INT 13 - Super PC-Kwik v3.20+ - ???
  1811.     AH = 83h
  1812.     SI = 4358h
  1813.     AL = ???
  1814.     ES:BX -> ???
  1815.     ???
  1816. Return: ???
  1817. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1818.       Super PC-Kwik, and thus support this call
  1819. SeeAlso: AH=85h
  1820. Index:    PC-Cache|Qualitas Qcache
  1821. --------c-1384--SI4358-----------------------
  1822. INT 13 - Super PC-Kwik v3.20+ - ???
  1823.     AH = 84h
  1824.     SI = 4358h
  1825.     AL = ???
  1826.     ???
  1827. Return: AL = ???
  1828. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1829.       Super PC-Kwik, and thus support this call
  1830. SeeAlso: AH=82h
  1831. Index:    PC-Cache|Qualitas Qcache
  1832. --------c-1385--SI4358-----------------------
  1833. INT 13 - Super PC-Kwik v3.20+ - ???
  1834.     AH = 85h
  1835.     SI = 4358h
  1836.     AL = ???
  1837.     DL = ???
  1838.     ???
  1839. Return: ???
  1840. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1841.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  1842.       to PC-Kwik v3.20)
  1843. SeeAlso: AH=83h
  1844. Index:    PC-Cache|Qualitas Qcache
  1845. --------c-1386--SI4358-----------------------
  1846. INT 13 - Super PC-Kwik v4.00+ - ???
  1847.     AH = 86h
  1848.     SI = 4358h
  1849.     ???
  1850. Return: ???
  1851. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  1852.       thus supports this call
  1853. Index:    Qualitas Qcache
  1854. --------c-1387--SI4358-----------------------
  1855. INT 13 - Super PC-Kwik v4.00+ - ???
  1856.     AH = 87h
  1857.     SI = 4358h
  1858.     ???
  1859. Return: AH = status??? (00h)
  1860.     CX = ???
  1861.     DX = ??? (0000h)
  1862. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  1863.       thus supports this call
  1864. Index:    Qualitas Qcache
  1865. --------c-1388--SI4358-----------------------
  1866. INT 13 - Super PC-Kwik v4.00+ - ???
  1867.     AH = 88h
  1868.     SI = 4358h
  1869.     ???
  1870. Return: AH = status??? (00h)
  1871.     CX = ???
  1872.     DX = ??? (0000h)
  1873. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  1874.       thus supports this call
  1875. Index:    Qualitas Qcache
  1876. --------c-1389--SI4358-----------------------
  1877. INT 13 - Super PC-Kwik v5.10+ - ???
  1878.     AH = 89h
  1879.     SI = 4358h
  1880.     ???
  1881. Return: ???
  1882. --------c-138A--SI4358-----------------------
  1883. INT 13 - Super PC-Kwik v5.10+ - ???
  1884.     AH = 8Ah
  1885.     SI = 4358h
  1886.     ???
  1887. Return: ???
  1888. --------c-138EED-----------------------------
  1889. INT 13 - HyperDisk v4.01+ - ???
  1890.     AX = 8EEDh
  1891.     ???
  1892. Return: ???
  1893. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  1894. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h
  1895. --------c-138EEE-----------------------------
  1896. INT 13 - HyperDisk v4.01+ - ???
  1897.     AX = 8EEEh
  1898. Return: CF set
  1899.     AX = CS of HyperDisk resident code
  1900.     ???
  1901. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  1902. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  1903. --------c-138EEF-----------------------------
  1904. INT 13 - HyperDisk v4.01+ - ???
  1905.     AX = 8EEFh
  1906. Return: CF set
  1907.     AX = CS of HyperDisk resident code
  1908.     ???
  1909. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  1910. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  1911. --------c-1392--SI4358-----------------------
  1912. INT 13 - Super PC-Kwik v5.10+ - ???
  1913.     AH = 92h
  1914.     SI = 4358h
  1915.     ???
  1916. Return: AH = status??? (00h)
  1917.     DL = ???
  1918. SeeAlso: AH=93h
  1919. --------c-1393--SI4358-----------------------
  1920. INT 13 - Super PC-Kwik v5.10+ - ???
  1921.     AH = 93h
  1922.     SI = 4358h
  1923.     ???
  1924. Return: AH = status??? (00h)
  1925.     AL = ???
  1926. SeeAlso: AH=92h
  1927. --------c-1394--SI4358-----------------------
  1928. INT 13 - Super PC-Kwik v5.10+ - ???
  1929.     AH = 94h
  1930.     SI = 4358h
  1931.     ???
  1932. Return: ???
  1933. --------c-1395--SI4358-----------------------
  1934. INT 13 - Super PC-Kwik v5.10+ - ???
  1935.     AH = 95h
  1936.     SI = 4358h
  1937.     ???
  1938. Return: AH = status??? (00h)
  1939.     DX = ???
  1940. --------c-1396--SI4358-----------------------
  1941. INT 13 - Super PC-Kwik v5.10+ - ???
  1942.     AH = 96h
  1943.     SI = 4358h
  1944.     AL = ??? (01h)
  1945.     BX = ??? (0790h)
  1946.     DL = ???
  1947. Return: AH = status??? (00h)
  1948.     DX = ???
  1949. --------c-1397--SI4358-----------------------
  1950. INT 13 - Super PC-Kwik v5.10+ - ???
  1951.     AH = 97h
  1952.     SI = 4358h
  1953.     ???
  1954. Return: ???
  1955. --------c-1398--SI4358-----------------------
  1956. INT 13 - Super PC-Kwik v5.10+ - ???
  1957.     AH = 98h
  1958.     SI = 4358h
  1959.     ???
  1960. Return: ???
  1961. --------c-1399--SI4358-----------------------
  1962. INT 13 - Super PC-Kwik v5.10+ - ???
  1963.     AH = 99h
  1964.     SI = 4358h
  1965.     ???
  1966. Return: ???
  1967. --------c-139A--SI4358-----------------------
  1968. INT 13 - Super PC-Kwik v5.10+ - ???
  1969.     AH = 9Ah
  1970.     SI = 4358h
  1971.     ???
  1972. Return: ???
  1973. --------c-139B--SI4358-----------------------
  1974. INT 13 - Super PC-Kwik v5.10+ - ???
  1975.     AH = 9Bh
  1976.     SI = 4358h
  1977.     ???
  1978. Return: ???
  1979. --------c-139C--SI4358-----------------------
  1980. INT 13 - Super PC-Kwik v5.10+ - ???
  1981.     AH = 9Ch
  1982.     SI = 4358h
  1983.     ???
  1984. Return: ???
  1985. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  1986.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  1987.       if a previous call is still in progress
  1988. --------c-139D--SI4358-----------------------
  1989. INT 13 - Super PC-Kwik v5.10+ - ???
  1990.     AH = 9Dh
  1991.     SI = 4358h
  1992.     ???
  1993. Return: ???
  1994. --------c-13A0--SI4358-----------------------
  1995. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  1996.     AH = A0h
  1997.     SI = 4358h
  1998. Return: AX = segment of resident code
  1999. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2000.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  2001.       corresponds to PC-Kwik v3.27)
  2002. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  2003. Index:    PC-Cache|Qualitas Qcache
  2004. --------c-13A1--SI4358-----------------------
  2005. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  2006.     AH = A1h
  2007.     SI = 4358h
  2008. Return: CF clear
  2009.     AH = 00h (v5.10)
  2010. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2011.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  2012.       corresponds to PC-Kwik v3.20)
  2013. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  2014. Index:    PC-Cache|Qualitas Qcache
  2015. --------c-13A2--SI4358-----------------------
  2016. INT 13 - Super PC-Kwik v3.20+ - ???
  2017.     AH = A2h
  2018.     SI = 4358h
  2019.     ???
  2020. Return: ???
  2021. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2022.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  2023.       corresponds to PC-Kwik v3.20)
  2024. Index:    PC-Cache|Qualitas Qcache
  2025. --------c-13A3--SI4358-----------------------
  2026. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  2027.     AH = A3h
  2028.     SI = 4358h
  2029. Return: CF clear
  2030. SeeAlso: AH=A4h
  2031. --------c-13A4--SI4358-----------------------
  2032. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  2033.     AH = A4h
  2034.     SI = 4358h
  2035. Return: CF clear
  2036. SeeAlso: AH=A3h
  2037. --------c-13A5--SI4358-----------------------
  2038. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  2039.     AH = A5h
  2040.     SI = 4358h
  2041. Return: AX = ???
  2042.     SI = ???
  2043. Notes:    called and used internally by Super PC-Kwik when a program terminates
  2044.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  2045.     this call is not supported by Qualitas Qcache 4.00
  2046. Index:    PC-Cache
  2047. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  2048. --------c-13A6--SI4358-----------------------
  2049. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  2050.     AH = A6h
  2051.     SI = 4358h
  2052.     DS:DX -> ASCIZ program name
  2053.     ES:BX -> EXEC data block (see #0931 at INT 21/AH=4Bh)
  2054. Return: ???
  2055. Note:    called and used internally by Super PC-Kwik when a program is loaded
  2056.       with INT 21/AX=4B00h
  2057. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  2058. --------c-13A7--SI4358-----------------------
  2059. INT 13 CU - Super PC-Kwik 5.1 - ???
  2060.     AH = A7h
  2061.     SI = 4358h
  2062. Return: ???
  2063. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  2064. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  2065. --------v-13A759-----------------------------
  2066. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  2067.     AX = A759h
  2068. Return: AX = 59A7h if installed
  2069.         DX:BX -> ??? data
  2070. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  2071.       Fifth Generation Systems, as bundled with Novell DOS 7
  2072. SeeAlso: INT 21/AH=0Eh/DL=ADh
  2073. --------c-13A8--SI4358-----------------------
  2074. INT 13 CU - Super PC-Kwik 5.1 - ???
  2075.     AH = A8h
  2076.     SI = 4358h
  2077. Return: ???
  2078. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  2079. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  2080. --------c-13A9--SI4358-----------------------
  2081. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  2082.     AH = A9h
  2083.     SI = 4358h
  2084. Return: ???
  2085. Note:    called and used internally by Super PC-Kwik when an application issues
  2086.       INT 21/AH=4Dh
  2087. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  2088. --------c-13AA--SI4358-----------------------
  2089. INT 13 - Super PC-Kwik v4+ - ???
  2090.     AH = AAh
  2091.     SI = 4358h
  2092.     ???
  2093. Return: ???
  2094. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2095.       this call
  2096. --------c-13AB--SI4358-----------------------
  2097. INT 13 - Super PC-Kwik v4+ - ???
  2098.     AH = ABh
  2099.     SI = 4358h
  2100.     ???
  2101. Return: ???
  2102. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2103.       this call
  2104. --------c-13AC--SI4358-----------------------
  2105. INT 13 - Super PC-Kwik v4+ - ???
  2106.     AH = ACh
  2107.     SI = 4358h
  2108.     ???
  2109. Return: ???
  2110. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2111.       this call
  2112. --------d-13AD-------------------------------
  2113. INT 13 - Priam HARD DISK CONTROLLER???
  2114.     AH = ADh
  2115.     ???
  2116. Return: ???
  2117. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  2118.       to check the ROM type on the controller for their hard disk kits
  2119. SeeAlso: AH=70h
  2120. --------c-13AD--SI4358-----------------------
  2121. INT 13 - Super PC-Kwik v4+ - ???
  2122.     AH = ADh
  2123.     SI = 4358h
  2124.     ???
  2125. Return: ???
  2126. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2127.       this call
  2128. --------c-13AE--SI4358-----------------------
  2129. INT 13 - Super PC-Kwik v5.10+ - ???
  2130.     AH = AEh
  2131.     SI = 4358h
  2132.     ???
  2133. Return: ???
  2134. --------c-13B0--SI4358-----------------------
  2135. INT 13 - Super PC-Kwik v3.20+ - ???
  2136.     AH = B0h
  2137.     SI = 4358h
  2138.     ???
  2139. Return: ???
  2140. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  2141.       supports this call; Qualitas Qcache does not support it
  2142. Index:    PC-Cache
  2143. --------v-13EC00-----------------------------
  2144. INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
  2145.     AX = EC00h
  2146. Return: CF clear if installed
  2147. SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
  2148. --------d-13EE-------------------------------
  2149. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  2150.     AH = EEh
  2151.     DL = drive number (80h, 81h)
  2152. Return: CF clear
  2153.        AH = 00h
  2154. Program: SWBIOS is a TSR by Ontrack Computer Systems
  2155. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  2156.       number to get the actual cylinder number desired
  2157. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  2158.     Disk Manager also supports these calls
  2159.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  2160.       in order to allow caching of drives using SWBIOS to access more than
  2161.       1024 cylinders
  2162.     for software which supports that call, this function is equivalent to
  2163.       calling AH=EFh with CX=0400h
  2164. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h
  2165. Index:    PC-Cache;huge disks|Disk Manager
  2166. --------c-13EF-------------------------------
  2167. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  2168.     AH = EFh
  2169.     CX = cylinder offset for next INT 13 call
  2170.     DL = drive number (80h, 81h)
  2171. Return: CF clear
  2172.         AH = 00h
  2173. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  2174.       IDE drives supporting the read multiple and write multiple commands
  2175. Desc:    the following INT 13 call will add the number given by this call to
  2176.       the specified cylinder to get the actual cylinder number, then reset
  2177.       the offset to zero
  2178. Note:    this function is also supported by the NOW! disk cache, and presumably
  2179.       newer versions of SWBIOS and Disk Manager
  2180.     for software which supports this call, AH=EEh is equivalent to calling
  2181.       this function with CX=0400h
  2182.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  2183.       and AH=EFh
  2184. SeeAlso: AX=7B00h
  2185. --------v-13F2-------------------------------
  2186. INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
  2187.     AH = F2h
  2188. Return: CF ??? if installed
  2189. SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
  2190. --------d-13F9-------------------------------
  2191. INT 13 - SWBIOS - INSTALLATION CHECK
  2192.     AH = F9h
  2193.     DL = drive number (80h,81h)
  2194. Return: CF clear
  2195.         DX = configuration word
  2196.         bit 15 set if other SWBIOS extensions available
  2197.     CF set on error
  2198. Program: SWBIOS is a TSR by Ontrack Computer Systems
  2199. Note:    Disk Manager also supports these calls
  2200. SeeAlso: AH=EEh
  2201. Index:    Disk Manager
  2202. --------v-13FA--DX5945-----------------------
  2203. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  2204.     AH = FAh
  2205.     DX = 5945h
  2206.     AL = function (00h-07h)
  2207. Return: varies by function
  2208.     if not installed:
  2209.         CF set
  2210.         AH = 01h
  2211. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  2212.       so it is listed in its entirety under INT 16/AX=FA00h and following
  2213. SeeAlso: INT 16/AX=FA00h
  2214. --------v-13FD50------------------------
  2215. INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
  2216.     AX = FD50h
  2217. Return: AX = 50FDh if resident
  2218. SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
  2219. --------d-13FE-------------------------------
  2220. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  2221.     AH = FEh
  2222.     DL = drive number (80h, 81h)
  2223. Return: CF clear
  2224.     DX = number of cylinders beyond 1024 on drive
  2225. Program: SWBIOS is a TSR by Ontrack Computer Systems
  2226. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  2227.     BIOS without this extension would return count modulo 1024
  2228.     Disk Manager also supports these calls
  2229. SeeAlso: AH=EEh
  2230. ----------13FF-------------------------------
  2231. INT 13 - Windows95 - ???
  2232.     AH = FFh
  2233.     DL - drive number (80h)
  2234. Return: ???
  2235. Note:    this function is called by the Windows95 Master Boot Record
  2236. --------U-13FFFFBHAA-------------------------
  2237. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  2238.     AX = FFFFh
  2239.     BH = AAh
  2240.     BL = subfunction
  2241.         00h installation check
  2242.         Return: AX = 1234h if installed
  2243.         01h turn on Turbo mode
  2244.         02h turn off Turbo mode
  2245.         03h set Turbo mode according to hardware switch
  2246.         04h set disk access to Turbo mode
  2247.         05h set disk access to Normal mode
  2248. Return: nothing
  2249. SeeAlso: INT 15/AH=DFh
  2250. Index:    installation check;UNIQUE UX Turbo Utility
  2251. --------S-14---------------------------------
  2252. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  2253. Note:    the installation check for this driver is to determine whether the
  2254.       "~DOSXAM~" character device exists
  2255. Index:    installation check;Digiboard DigiCHANNEL
  2256. --------S-1400-------------------------------
  2257. INT 14 - SERIAL - INITIALIZE PORT
  2258.     AH = 00h
  2259.     AL = port parameters (see #0204)
  2260.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  2261. Return: AH = line status (see #0208)
  2262.         FFh if error on Digiboard XAPCM232.SYS
  2263.     AL = modem status (see #0209)
  2264. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  2265.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  2266.       bps will result in 4800 bps
  2267.     various network and serial-port drivers support the standard BIOS
  2268.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  2269.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  2270. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  2271. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  2272. SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial"
  2273.  
  2274. Bitfields for serial port parameters:
  2275. Bit(s)    Description    (Table 0204)
  2276.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  2277.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  2278.  2    stop bits (set = 2, clear = 1)
  2279.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  2280. SeeAlso: #0206,#0211,#0212,#0213
  2281. --------S-1400-------------------------------
  2282. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  2283.     AH = 00h
  2284.     AL = initializing parameters
  2285.         7 - 6 - 5       4 - 3     2      1 - 0
  2286.         -BAUD RATE-       PARITY   STOP   WORD
  2287.                     BITS  LENGTH
  2288.         000 19200 bd   00 none  0: 1  00: 5
  2289.         001 38400 bd   01 odd   1: 2  01: 6
  2290.         010      300 bd   11 even      10: 7
  2291.         011      600 bd          11: 8
  2292.         100     1200 bd
  2293.         101     2400 bd
  2294.         110     4800 bd
  2295.         111     9600 bd (4800 on PCjr)
  2296.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  2297. Return: AH = RS-232 status code bits (see #0205)
  2298.     AL = modem status bits
  2299.         bit 3: always 1
  2300.         bit 7: DCD - carrier detect
  2301. SeeAlso: #0204,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  2302.  
  2303. Bitfields for FOSSIL RS-232 status:
  2304. Bit(s)    Description    (Table 0205)
  2305.  0    RDA - input data is available in buffer
  2306.  1    OVRN - data has been lost
  2307.  5    THRE - room is available in output buffer
  2308.  6    TSRE - output buffer empty
  2309. --------S-1400-------------------------------
  2310. INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT
  2311.     AH = 00h
  2312.     AL = RS-232C parameters (see #0206)
  2313.     DL = port number
  2314.     DH = protocol
  2315.         bit 0: use XON/XOFF on received data
  2316.         bit 1: use XON/XOFF when transmitting
  2317. Return: AH = line status (see #0208)
  2318.     AL = modem status (see #0209)
  2319. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  2320. SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000"
  2321. --------S-1400-------------------------------
  2322. INT 14 - MBBIOS - INITIALIZE PORT
  2323.     AH = 00h
  2324.     AL = port parameters (see #0206)
  2325.     DX = port number
  2326. Return: AH = line status (see #0208)
  2327.     AL = modem status (see #0209)
  2328. Note:    MBBIOS was written by H. Roy Engehausen
  2329. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  2330.  
  2331. Bitfields for MBBIOS port parameters:
  2332. Bit(s)    Description    (Table 0206)
  2333.  7-5    data rate
  2334.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  2335.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  2336.     if the high-speed option is set)
  2337.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  2338.  2    stop bits (set = 2, clear = 1)
  2339.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  2340. SeeAlso: #0204
  2341. --------N-1400--DXFFFF-----------------------
  2342. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  2343.     AH = 00h
  2344.     DX = FFFFh
  2345.     ES:DI -> vector string specifying new parameters
  2346. Return: AH = return code (00h,03h) (see #0207)
  2347. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2348.       serial ports over an IPX or NetBIOS-based network
  2349. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2350.       function, but redirects the port over the network; if DX is any other
  2351.       value, the call is chained
  2352. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  2353.  
  2354. (Table 0207)
  2355. Values for Connection Manager return code:
  2356.  00h    successful
  2357.  01h    no such connection
  2358.  02h    invalid connection ID
  2359.  03h    invalid subvector found
  2360.  04h    communication error (check BH)
  2361.  06h    insufficient resources, retry later
  2362.  FFh    no data available
  2363. --------S-1401-------------------------------
  2364. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  2365.     AH = 01h
  2366.     AL = character to write
  2367.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  2368. Return: AH bit 7 clear if successful
  2369.     AH bit 7 set on error
  2370.     AH bits 6-0 = port status (see #0208)
  2371. Notes:    various network and serial-port drivers support the standard BIOS
  2372.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  2373.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  2374. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  2375. --------N-1401--DXFFFF-----------------------
  2376. INT 14 - Connection Manager - SEND CHARACTER
  2377.     AH = 01h
  2378.     DX = FFFFh
  2379.     BH = character to send
  2380. Return: AH = return code (00h-02h,06h) (see #0207)
  2381. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2382.       function, but redirects the port over the network; if DX is any other
  2383.       value, the call is chained
  2384.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  2385.       is the preferred function because it provides better performance
  2386. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  2387. --------S-1402-------------------------------
  2388. INT 14 - SERIAL - READ CHARACTER FROM PORT
  2389.     AH = 02h
  2390.     AL = 00h (ArtiCom)
  2391.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  2392. Return: AH = line status (see #0208)
  2393.     AL = received character if AH bit 7 clear
  2394. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  2395.       data ready
  2396.     various network and serial-port drivers support the standard BIOS
  2397.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  2398.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  2399. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  2400. --------S-1402-------------------------------
  2401. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  2402.     AH = 02h
  2403.     DX = port number (0-3)
  2404. Return: AL = character received
  2405.     AH = 00h
  2406. SeeAlso: AH=01h,AH=02h"SERIAL"
  2407. --------N-1402--DXFFFF-----------------------
  2408. INT 14 - Connection Manager - RECEIVE CHARACTER
  2409.     AH = 02h
  2410.     DX = FFFFh
  2411.     BH = character to send
  2412. Return: AH = return code (00h-02h,04h,FFh) (see #0207)
  2413.     BH = line status (see #0208)
  2414.     AL = received character (if any)
  2415. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2416.       function, but redirects the port over the network; if DX is any other
  2417.       value, the call is chained
  2418.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  2419.       is the preferred function because it provides better performance
  2420. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  2421. --------S-1403-------------------------------
  2422. INT 14 - SERIAL - GET PORT STATUS
  2423.     AH = 03h
  2424.     AL = 00h (ArtiCom)
  2425.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  2426. Return: AH = line status (see #0208)
  2427.     AL = modem status (see #0209)
  2428.     AX = 9E00h if disconnected (ArtiCom)
  2429. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  2430. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  2431.  
  2432. Bitfields for serial line status:
  2433. Bit(s)    Description    (Table 0208)
  2434.  7    timeout
  2435.  6    transmit shift register empty
  2436.  5    transmit holding register empty
  2437.  4    break detected
  2438.  3    framing error
  2439.  2    parity error
  2440.  1    overrun error
  2441.  0    receive data ready
  2442. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  2443.       through a separate call (see AX=8000h"COMM-DRV")
  2444.  
  2445. Bitfields for modem status:
  2446. Bit(s)    Description    (Table 0209)
  2447.  7    carrier detect
  2448.  6    ring indicator
  2449.  5    data set ready
  2450.  4    clear to send
  2451.  3    delta carrier detect
  2452.  2    trailing edge of ring indicator
  2453.  1    delta data set ready
  2454.  0    delta clear to send
  2455. --------N-1403--DXFFFF-----------------------
  2456. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  2457.     AH = 03h
  2458.     DX = FFFFh
  2459.     AL = connection ID
  2460. Return: AH = return code (00h-02h) (see #0207)
  2461.     BH = line status (see #0210)
  2462.     BL = modem status (see #0209) (only bits 4,5,7; all others zero)
  2463. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2464.       function, but redirects the port over the network; if DX is any other
  2465.       value, the call is chained
  2466. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  2467.  
  2468. Bitfields for Connection Manager line status:
  2469. Bit(s)    Description    (Table 0210)
  2470.  7    CTS changed
  2471.  6    current CTS state
  2472.  5    timeout
  2473.  4    break
  2474.  3    framing error
  2475.  2    parity error
  2476.  1    overrun
  2477.  0    current carrier state (0 active, 1 no carrier)
  2478. --------S-1404-------------------------------
  2479. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  2480.     AH = 04h
  2481.     AL = break status
  2482.         00h if break
  2483.         01h if no break
  2484.     BH = parity (see #0211)
  2485.     BL = number of stop bits
  2486.         00h one stop bit
  2487.         01h two stop bits (1.5 if 5 bit word length)
  2488.     CH = word length (see #0212)
  2489.     CL = bps rate (see #0213)
  2490.     DX = port number
  2491. Return: AX = port status code (see #0208,#0209)
  2492. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  2493.  
  2494. (Table 0211)
  2495. Values for serial port parity:
  2496.  00h    no parity
  2497.  01h    odd parity
  2498.  02h    even parity
  2499.  03h    stick parity odd
  2500.  04h    stick parity even
  2501. SeeAlso: #0204,#0212,#0213,#0214
  2502.  
  2503. (Table 0212)
  2504. Values for serial port word length:
  2505.  00h    5 bits
  2506.  01h    6 bits
  2507.  02h    7 bits
  2508.  03h    8 bits
  2509. SeeAlso: #0204,#0211,#0213,#0249
  2510.  
  2511. (Table 0213)
  2512. Values for serial port bps rate:
  2513.  00h    110 (19200 if ComShare installed)
  2514.  01h    150 (38400 if ComShare installed)
  2515.  02h    300
  2516.  03h    600 (14400 if ComShare installed)
  2517.  04h    1200
  2518.  05h    2400
  2519.  06h    4800 (28800 if ComShare installed)
  2520.  07h    9600
  2521.  08h    19200
  2522. ---ComShare---
  2523.  09h    38400
  2524.  0Ah    57600
  2525.  0Bh    115200
  2526. SeeAlso: #0204,#0211,#0213,#0250,#0257,AH=36h,#0268,#0503,#2201
  2527. --------S-1404-------------------------------
  2528. INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER
  2529.     AH = 04h
  2530.     DL = port number
  2531.     DH = protocol
  2532.         bit 0: use XON/XOFF on received data
  2533.         bit 1: use XON/XOFF when transmitting
  2534. Return: nothing
  2535. Desc:    clears the serial interface buffer
  2536. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  2537. SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000"
  2538. --------S-1404-------------------------------
  2539. INT 14 - FOSSIL - INITIALIZE DRIVER
  2540.     AH = 04h
  2541.     DX = port number
  2542.     optionally BX=4F50h
  2543.            ES:CX -> byte to be set upon ^C
  2544. Return: AX = 1954h (if successful)
  2545.     BL = maximum function number supported (excluding 7Eh and above)
  2546.     BH = revision of FOSSIL specification supported
  2547.     DTR is raised
  2548. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  2549.       following byte contains the maximum function number supported; this
  2550.       can serve as an installation check
  2551. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  2552. Index:    installation check;FOSSIL
  2553. --------S-1404-------------------------------
  2554. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  2555.     AH = 04h
  2556. Return: port initialized; if Hayes-compatible modem, a connection has been
  2557.       established
  2558. Note:    the port number is stored at offset BEh in the Task Control Block
  2559.       (see #0360 at INT 15/AH=13h"MultiDOS")
  2560. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  2561. --------S-1404-------------------------------
  2562. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  2563.     AH = 04h
  2564.     AL = initializing parameters (see #0214)
  2565.     BX = baud rate
  2566.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2567. Return: AH = status
  2568.         00h successful
  2569.         FFh error
  2570. SeeAlso: AH=05h"Digiboard"
  2571.  
  2572. Bitfields for Digiboard initializing parameters:
  2573. Bit(s)    Description    (Table 0214)
  2574.  7-5    unused
  2575.  4-3    parity (00 none, 01 odd, 11 even)
  2576.  2    stop bits (0 = one, 1 = two)
  2577.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  2578. SeeAlso: #0211,#0212
  2579. --------S-1404-------------------------------
  2580. INT 14 - MBBIOS - INSTALLATION CHECK
  2581.     AH = 04h
  2582.     DX = port number
  2583. Return: AX = AA55h if installed on specified port
  2584. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  2585. --------N-1404--DXFFFF-----------------------
  2586. INT 14 - Connection Manager - OPEN COMMUNICATION
  2587.     AH = 04h
  2588.     DX = FFFFh
  2589.     ES:DI -> Connection Request protocol vector (see #0215)
  2590. Return: AH = return code
  2591.         00h successful
  2592.         AL = connection ID
  2593.         BH = connection type
  2594.             00h direct connection or no dialing
  2595.             01h Connection Server dialed phone
  2596.         01h no response from Connection Server
  2597.         03h invalid request
  2598. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2599.       serial ports over an IPX or NetBIOS-based network
  2600. Desc:    initiate a connection to the Connection Server listed in the current
  2601.       Client parameter set
  2602. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2603.       function, but redirects the port over the network; if DX is any other
  2604.       value, the call is chained
  2605.     all subvectors of the Connection Request vector are optional; if
  2606.       missing, default values are provided by the default connection
  2607.       parameter set
  2608. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  2609. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  2610.  
  2611. Format of Connection Manager protocol command vector:
  2612. Offset    Size    Description    (Table 0215)
  2613.  00h    WORD    (big-endian) total length of command (including this word)
  2614.  02h    WORD    (big-endian) command code
  2615.         EF01h Connection Request
  2616.         EF06h Modify Connection Parameters
  2617.  04h  N BYTEs    list of subvectors (see #0217)
  2618.         allowable subvector types are 01h-04h,17h,18h for command code
  2619.           EF01h; 03h,04h for command code EF06h (see #0216)
  2620.  
  2621. (Table 0216)
  2622. Values for Connection Manager subvector type code:
  2623.  01h    Connection ID
  2624.  02h    Destination ID
  2625.  03h    Asynchronous line parameters
  2626.  04h    Data transfer parameters
  2627.  09h    Line speed
  2628.  0Ah    Serial coding
  2629.  0Bh    Packet size
  2630.  0Ch    Timers
  2631.  0Dh    Special characters
  2632.  0Eh    Target ID
  2633.  0Fh    Telephone number
  2634.  10h    ASCII destination ID
  2635.  11h    Parity
  2636.  12h    Bits per character
  2637.  13h    Number of stop bits
  2638.  14h    Packet timer
  2639.  15h    Intercharacter timer
  2640.  17h    Flags
  2641.  18h    Parameter ranges
  2642.  19h    Flow control
  2643.  
  2644. Format of Connection Manager subvector:
  2645. Offset    Size    Description    (Table 0217)
  2646.  00h    BYTE    length of subvector
  2647.  01h    BYTE    type code (see #0216)
  2648.  02h N-2 BYTEs    data, which may include subvectors
  2649. SeeAlso: #0218,#0219,#0220,#0221,#0222,#0223,#0224,#0225,#0226,#0227,#0228
  2650. SeeAlso: #0229,#0230,#0232,#0233,#0234,#0235,#0236,#0237,#0215
  2651.  
  2652. Format of Connection ID subvector:
  2653. Offset    Size    Description    (Table 0218)
  2654.  00h    BYTE    03h (length)
  2655.  01h    BYTE    01h (subvector "Connection ID")
  2656.  02h    BYTE    connection ID
  2657. SeeAlso: #0217
  2658.  
  2659. Format of Destination ID subvector:
  2660. Offset    Size    Description    (Table 0219)
  2661.  00h    BYTE    length
  2662.  01h    BYTE    02h (subvector "Destination ID")
  2663.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  2664. SeeAlso: #0217
  2665.  
  2666. Format of Asynchronous line parameters subvector:
  2667. Offset    Size    Description    (Table 0220)
  2668.  00h    BYTE    length
  2669.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  2670.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  2671. SeeAlso: #0217
  2672.  
  2673. Format of Data transfer parameters subvector:
  2674. Offset    Size    Description    (Table 0221)
  2675.  00h    BYTE    length
  2676.  01h    BYTE    04h (subvector "Data transfer parameters")
  2677.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  2678. SeeAlso: #0217
  2679.  
  2680. Format of Line speed subvector:
  2681. Offset    Size    Description    (Table 0222)
  2682.  00h    BYTE    04h (length)
  2683.  01h    BYTE    09h (subvector "Line speed")
  2684.  02h    WORD    bit map, highest set bit selects speed
  2685.         bit 0: 2400
  2686.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  2687.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  2688. SeeAlso: #0217
  2689.  
  2690. Format of Serial coding subvector:
  2691. Offset    Size    Description    (Table 0223)
  2692.  00h    BYTE    length
  2693.  01h    BYTE    0Ah (subvector "Serial coding")
  2694.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  2695. SeeAlso: #0217
  2696.  
  2697. Format of Packet size subvector:
  2698. Offset    Size    Description    (Table 0224)
  2699.  00h    BYTE    04h (length)
  2700.  01h    BYTE    0Bh (subvector "Packet size")
  2701.  02h    WORD    (big-endian) packet size, 1 to 1024
  2702. SeeAlso: #0217
  2703.  
  2704. Format of Timers subvector:
  2705. Offset    Size    Description    (Table 0225)
  2706.  00h    BYTE    length
  2707.  01h    BYTE    0Ch (subvector "Timers")
  2708.  02h  8 BYTEs    subvector of type 14h or 15h
  2709. SeeAlso: #0217
  2710.  
  2711. Format of Special characters subvector:
  2712. Offset    Size    Description    (Table 0226)
  2713.  00h    BYTE    length
  2714.  01h    BYTE    0Dh (subvector "Special characters")
  2715.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  2716. SeeAlso: #0217
  2717.  
  2718. Format of Target ID:
  2719. Offset    Size    Description    (Table 0227)
  2720.  00h    BYTE    length
  2721.  01h    BYTE    0Eh (subvector "Target ID")
  2722.  02h  N BYTEs    target ID, 1-16 bytes
  2723. SeeAlso: #0217
  2724.  
  2725. Format of Telephone number subvector:
  2726. Offset    Size    Description    (Table 0228)
  2727.  00h    BYTE    length
  2728.  01h    BYTE    0Fh (subvector "Telephone number")
  2729.  02h  N BYTEs    telephone number
  2730. SeeAlso: #0217
  2731.  
  2732. Format of ASCII destination ID subvector:
  2733. Offset    Size    Description    (Table 0229)
  2734.  00h    BYTE    length
  2735.  01h    BYTE    10h (subvector "ASCII destination ID")
  2736.  02h  N BYTEs    destination ID
  2737. SeeAlso: #0217
  2738.  
  2739. Format of Parity subvector:
  2740. Offset    Size    Description    (Table 0230)
  2741.  00h    BYTE    03h (length)
  2742.  01h    BYTE    11h (subvector "Parity")
  2743.  02h    BYTE    parity type (see #0231)
  2744. SeeAlso: #0217
  2745.  
  2746. Bitfields for Connection Manager parity type:
  2747. Bit(s)    Description    (Table 0231)
  2748.  7    odd
  2749.  6    even
  2750.  5    mark
  2751.  4    space
  2752.  3    none
  2753. SeeAlso: #0230
  2754.  
  2755. Format of Bits per character subvector:
  2756. Offset    Size    Description    (Table 0232)
  2757.  00h    BYTE    03h (length)
  2758.  01h    BYTE    12h (subvector "Bits per character")
  2759.  02h    BYTE    bits per character
  2760.         bit 7: seven
  2761.         bit 6: eight
  2762. SeeAlso: #0217
  2763.  
  2764. Format of Number of stop bits subvector:
  2765. Offset    Size    Description    (Table 0233)
  2766.  00h    BYTE    03h (length)
  2767.  01h    BYTE    13h (subvector "Number of stop bits")
  2768.  02h    BYTE    stop bits
  2769.         bit 7: one
  2770.         bit 6: 1.5
  2771.         bit 5: two
  2772. SeeAlso: #0217
  2773.  
  2774. Format of Packet timer and Intercharacter timer subvectors:
  2775. Offset    Size    Description    (Table 0234)
  2776.  00h    BYTE    04h (length)
  2777.  01h    BYTE    subvector type
  2778.         14h Packet timer
  2779.         15h Intercharacter timer
  2780.  02h    WORD    (big-endian) unit of value representing 20ms
  2781. SeeAlso: #0217
  2782.  
  2783. Format of Flags subvector:
  2784. Offset    Size    Description    (Table 0235)
  2785.  00h    BYTE    03h (length)
  2786.  01h    BYTE    17h (subvector "Flags")
  2787.  02h    BYTE    flags
  2788.         bit 7: queueing requested
  2789. SeeAlso: #0217
  2790.  
  2791. Format of Parameter ranges subvector:
  2792. Offset    Size    Description    (Table 0236)
  2793.  00h    BYTE    length
  2794.  01h    BYTE    18h (subvector "Parameter ranges")
  2795.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  2796. SeeAlso: #0217
  2797.  
  2798. Format of Flow control subvector:
  2799. Offset    Size    Description    (Table 0237)
  2800.  00h    BYTE    length (02h-04h)
  2801.  01h    BYTE    19h (subvector "Flow control")
  2802.  02h    BYTE    XOFF character
  2803.  03h    BYTE    XON character
  2804. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  2805.       character will be accepted as XON after an XOFF
  2806. SeeAlso: #0217
  2807. --------S-140400-----------------------------
  2808. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  2809.     AX = 0400h
  2810. Return: AX = 0FF0h
  2811. SeeAlso: AX=0401h,AX=0408h
  2812. --------S-140401-----------------------------
  2813. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  2814.     AX = 0401h
  2815.     CX = mode
  2816. Return: nothing
  2817. SeeAlso: AX=0400h,AX=0402h
  2818. --------S-140402-----------------------------
  2819. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  2820.     AX = 0402h
  2821.     CL = parameters
  2822. Return: nothing
  2823. SeeAlso: AX=0400h,AX=0401h
  2824. --------S-140403-----------------------------
  2825. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  2826.     AX = 0403h
  2827.     CX = timeout
  2828. Return: nothing
  2829. SeeAlso: AX=0400h
  2830. --------S-140404-----------------------------
  2831. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  2832.     AX = 0404h
  2833. Return: nothing
  2834. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  2835. --------S-140405-----------------------------
  2836. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  2837.     AX = 0405h
  2838. Return: AX = number of characters in buffer
  2839. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  2840. --------S-140406-----------------------------
  2841. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  2842.     AX = 0406h
  2843. Return: nothing
  2844. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  2845. --------S-140407-----------------------------
  2846. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  2847.     AX = 0407h
  2848. Return: AX = number of characters in the buffer
  2849. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  2850. --------S-140408-----------------------------
  2851. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  2852.     AX = 0408h
  2853. Return: nothing
  2854. SeeAlso: AX=0400h
  2855. --------S-1405-------------------------------
  2856. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  2857.     AH = 05h
  2858.     AL = function
  2859.         00h read modem control register
  2860.           Return: BL = modem control register (see #0238)
  2861.               AH = status
  2862.         01h write modem control register
  2863.           BL = modem control register (see #0238)
  2864.           Return: AX = status
  2865.     DX = port number
  2866. Note:    also supported by ArtiCom
  2867. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  2868.  
  2869. Bitfields for modem control register:
  2870. Bit(s)    Description    (Table 0238)
  2871.  0    data terminal ready
  2872.  1    request to send
  2873.  2    OUT1
  2874.  3    OUT2
  2875.  4    LOOP
  2876.  5-7    reserved
  2877. --------S-1405-------------------------------
  2878. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  2879.     AH = 05h
  2880.     DX = port number
  2881. Return: none
  2882.     DTR is not affected
  2883. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  2884. --------S-1405-------------------------------
  2885. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  2886.     AH = 05h
  2887.     AL = timeout in seconds (00h = never)
  2888. Return: AL = status
  2889.         00h successful
  2890.         AH = character read
  2891.         01h read error
  2892.         02h timed out
  2893.         other modem status (CTS, DSR) changed
  2894. Note:    the port number is stored at offset BEh in the Task Control Block
  2895. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  2896. SeeAlso: INT 15/AH=13h"MultiDOS"
  2897. --------S-1405-------------------------------
  2898. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  2899.     AH = 05h
  2900.     AL = protocol (see #0239)
  2901.     BH = new XOFF character (00h = current)
  2902.     BL = new XON character (00h = current)
  2903.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2904. Return: AH = status
  2905.         00h successful
  2906.         FFh error
  2907. SeeAlso: AH=04h"Digiboard"
  2908.  
  2909. Bitfields for Digiboard protocol:
  2910. Bit(s)    Description    (Table 0239)
  2911.  7-4    unused
  2912.  3    RTS/CTS
  2913.  2    DSR
  2914.  1,0    XON/XOFF
  2915. --------S-1405-------------------------------
  2916. INT 14 - MBBIOS - DROP DTR AND RTS
  2917.     AH = 05h
  2918.     DX = port number
  2919. Return: none
  2920. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  2921. --------S-1405-------------------------------
  2922. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  2923.     AH = 05h
  2924.     AL = new port protocol (see #0240)
  2925.     BH = new XOFF character
  2926.     BL = new XON character
  2927.     DX = port number
  2928. Return: AH = FFh if invalid protocol
  2929. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  2930.  
  2931. Bitfields for PC-MOS/386 serial port protocol:
  2932. Bit(s)    Description    (Table 0240)
  2933.  7    set to enable/disable CD monitoring, clear to set protocol
  2934. ---bit 7 set---
  2935.  4    CD monitoring enabled
  2936.  5    automatic restart enabled
  2937. ---bit 7 clear---
  2938.  0    receive XON/XOFF
  2939.  1    transmit XON/XOFF
  2940.  2    DTR/DSR
  2941.  3    RTS/CTS
  2942. --------N-1405--DXFFFF-----------------------
  2943. INT 14 - Connection Manager - CLOSE COMMUNICATION
  2944.     AH = 05h
  2945.     DX = FFFFh
  2946.     AL = connection ID
  2947. Return: AH = return code
  2948.         00h successful
  2949.         01h no such connection
  2950.         02h invalid connection ID
  2951.         AL = correct connection ID
  2952. Desc:    terminate existing connection to allow another one to be established
  2953. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2954.       function, but redirects the port over the network; if DX is any other
  2955.       value, the call is chained
  2956. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  2957. --------S-1406-------------------------------
  2958. INT 14 - FOSSIL - RAISE/LOWER DTR
  2959.     AH = 06h
  2960.     DX = port
  2961.     AL = DTR state to be set
  2962.         00h = lower
  2963.         01h = raise
  2964. Return: nothing
  2965. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  2966. --------S-1406-------------------------------
  2967. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  2968.     AH = 06h
  2969.     AL = character
  2970. Return: AL = status
  2971.         00h successful
  2972. Notes:    the port number is stored at offset BEh in the Task Control Block
  2973.     if output queue is full, the calling task is blocked until the
  2974.       character can be stored
  2975. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  2976. SeeAlso: INT 15/AH=13h"MultiDOS"
  2977. --------S-1406-------------------------------
  2978. INT 14 - MBBIOS - RAISE DTR AND RTS
  2979.     AH = 06h
  2980.     DX = port number
  2981. Return: none
  2982. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  2983. --------S-1406-------------------------------
  2984. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  2985.     AH = 06h
  2986.     DX = port number
  2987. Return: AH bit 7 set
  2988.     AL = number of highest function supported by driver
  2989. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  2990.       operating system by The Software Link, Inc.
  2991. SeeAlso: AH=18h"PC-MOS"
  2992. --------N-1406-------------------------------
  2993. INT 14 - TelAPI - WRITE BLOCK
  2994.     AH = 06h
  2995.     CX = number of characters to write
  2996.     DX = port number
  2997.     ES:DI -> buffer containing data
  2998. Return: AX = number of characters actually sent (negative on error)
  2999.     CX = ???
  3000. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI"
  3001. --------N-1406--DXFFFF-----------------------
  3002. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  3003.     AH = 06h
  3004.     DX = FFFFh
  3005.     AL = connection ID
  3006.     CX = number of characters to send
  3007.     ES:DI -> buffer containing data to be sent
  3008. Return: AH = return code (see #0207)
  3009. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3010.       serial ports over an IPX or NetBIOS-based network
  3011. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  3012. --------S-1407-------------------------------
  3013. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  3014.     AH = 07h
  3015. Return: AL = timer tick interrupt number
  3016.     AH = ticks per second on interrupt number in AL
  3017.     DX = approximate number of milliseconds per tick
  3018. SeeAlso: AH=16h
  3019. --------S-1407-------------------------------
  3020. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  3021.     AH = 07h
  3022. Return: CL = modem status (see #0209)
  3023.     CH = character at head of input queue (if any)
  3024.     DX = number of characters in input queue
  3025. Note:    the port number is stored at offset BEh in the Task Control Block
  3026. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  3027. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3028. --------S-1407-------------------------------
  3029. INT 14 - MBBIOS - SEND BREAK
  3030.     AH = 07h
  3031.     DX = port number
  3032. Return: none
  3033. SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
  3034. --------S-1407-------------------------------
  3035. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  3036.     AH = 07h
  3037.     BX = duration of break in clock ticks
  3038.     DX = port number
  3039. Return: nothing
  3040. --------N-1407-------------------------------
  3041. INT 14 - TelAPI - READ BLOCK
  3042.     AH = 07h
  3043.     CX = length of buffer in bytes
  3044.     DX = port number
  3045.     ES:DI -> buffer for data
  3046. Return: AX > 0000h number of characters actually read
  3047.     AX = 0000h host has closed connection
  3048.     AX < 0000h error code (see #0301)
  3049.     CX = ???
  3050. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  3051.       negotiates various Telnet options, and immediately executes several
  3052.       different Telnet action commands
  3053. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI"
  3054. --------N-1407--DXFFFF-----------------------
  3055. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  3056.     AH = 07h
  3057.     DX = FFFFh
  3058.     AL = connection ID
  3059.     BL = flag
  3060.         00h wait for data
  3061.         nonzero do not wait if no data avaiable
  3062.     CX = size of receive buffer
  3063.     ES:DI -> buffer for received characters
  3064. Return: AH = return code (00h-02h,04h,FFh) (see #0207)
  3065.     BH = line status (see #0210)
  3066.     CX = number of characters received
  3067. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3068.       serial ports over an IPX or NetBIOS-based network
  3069. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  3070. --------S-1408-------------------------------
  3071. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  3072.     AH = 08h
  3073.     DX = port number
  3074. Return: nothing
  3075. SeeAlso: AH=09h"FOSSIL"
  3076. --------S-1408-------------------------------
  3077. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  3078.     AH = 08h
  3079. Return: AL = line status (see #0208)
  3080.     AH destroyed
  3081. Notes:    the port number is stored at offset BEh in the Task Control Block
  3082.     on every line status change, the line status is ORed with the line
  3083.       status accumulator; this function returns the accumulator and clears
  3084.       it
  3085. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3086. --------S-1408-------------------------------
  3087. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  3088.     AH = 08h
  3089.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3090. Return: AH = RS232 status bits (see #0208 at AH=03h)
  3091.     ZF set if no characters queued
  3092.     ZF clear if character available
  3093.         AL = next character
  3094. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  3095. --------S-1408-------------------------------
  3096. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  3097.     AH = 08h
  3098.     DX = port number
  3099. Return: AL = character (if AH bit 0 set)
  3100.     AH = status (see #0208)
  3101. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  3102. --------S-1408-------------------------------
  3103. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  3104.     AH = 08h
  3105.     DX = port number
  3106. Return: CF set if carrier loss detected
  3107.     ZF set if input buffer empty
  3108.     ZF clear if characters available
  3109.         AL = next character dequeued
  3110. --------N-1408--DXFFFF-----------------------
  3111. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  3112.     AH = 08h
  3113.     DX = FFFFh
  3114.     CX = size of buffer for parameters or 0000h to get length
  3115.     ES:DI -> buffer for parameter vector (see #0215)
  3116. Return: AH = return code
  3117.         00h successful
  3118.         CX = number of bytes required (if CX=0000h on entry)
  3119.         CX = number of bytes omitted for lack of space (if CX nonzero)
  3120.         nonzero invalid request
  3121. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3122.       serial ports over an IPX or NetBIOS-based network
  3123. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  3124. --------S-1409-------------------------------
  3125. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  3126.     AH = 09h
  3127.     DX = port number
  3128. Return: nothing
  3129. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  3130. --------S-1409-------------------------------
  3131. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  3132.     AH = 09h
  3133. Return: modem status byte cleared
  3134. Note:    the port number is stored at offset BEh in the Task Control Block
  3135. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3136. --------S-1409-------------------------------
  3137. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  3138.     AH = 09h
  3139.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3140. Return: AH = status
  3141.         00h successful
  3142.         FFh error
  3143. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  3144. --------S-1409-------------------------------
  3145. INT 14 - MBBIOS - GET/SET OPTIONS
  3146.     AH = 09h
  3147.     AL = option byte (see #0241)
  3148.     DX = port number???
  3149. Return: AL = old option byte
  3150. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  3151.  
  3152. Bitfields for MBBIOS option byte:
  3153. Bit(s)    Description    (Table 0241)
  3154.  0    transmit buffering enabled
  3155.  2    hardware handshaking enabled
  3156.  5    high-speed option enabled (see AH=00h"MBBIOS",#0206)
  3157.  other    reserved
  3158. --------S-1409-------------------------------
  3159. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  3160.     AH = 09h
  3161.     DX = port number
  3162. Return: nothing
  3163. SeeAlso: AH=13h"PC-MOS"
  3164. --------N-1409--DXFFFF-----------------------
  3165. INT 14 - Connection Manager - SEND BREAK
  3166.     AH = 09h
  3167.     DX = FFFFh
  3168.     AL = connection ID
  3169. Return: AH = return code (00h-02h) (see #0207 at AH=00h/DX=FFFFh)
  3170. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3171.       serial ports over an IPX or NetBIOS-based network
  3172. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  3173. --------S-140A-------------------------------
  3174. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  3175.     AH = 0Ah
  3176.     DX = port number
  3177. Return: nothing
  3178. SeeAlso: AH=09h"FOSSIL",AH=85h
  3179. --------S-140A-------------------------------
  3180. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  3181.     AH = 0Ah
  3182.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3183. Return: AX = number of characters available in buffer
  3184. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  3185. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  3186. --------S-140A-------------------------------
  3187. INT 14 - MBBIOS - WRITE BUFFER
  3188.     AH = 0Ah
  3189.     CX = count
  3190.     ES:DI -> buffer (see #0242)
  3191. Return: AX = status (see #0208,#0209)
  3192.     CX = unsent character count
  3193.     DI updated
  3194. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  3195.       contains the segment of a buffer containing the packet to be sent,
  3196.       which by default will be freed once the packet has been sent.     Use
  3197.       AH=0Ch"MBBIOS" to allocate the buffer.
  3198. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  3199.  
  3200. Format of MBBIOS PACCOM buffer:
  3201. Offset    Size    Description    (Table 0242)
  3202.  00h 504 BYTEs    data area
  3203. 1F8h    WORD    length of data in data area
  3204. 1FAh    BYTE    flags/status
  3205.         bit 7: don't discard buffer after transmitting data
  3206.         bit 6: buffer has been transmitted
  3207. 1FBh    BYTE    reserved (0) for additional flags/status
  3208. 1FCh    WORD    user data
  3209. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  3210. --------N-140A--DXFFFF-----------------------
  3211. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  3212.     AH = 0Ah
  3213.     DX = FFFFh
  3214.     ES:DI -> vector string containing new parameters (see #0215)
  3215. Return: AH = return code (00h-03h,06h) (see #0207)
  3216. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3217.       serial ports over an IPX or NetBIOS-based network
  3218. Note:    any subvectors valid for the Change Parameters command replace the
  3219.       existing values in the current set
  3220. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  3221. --------S-140B-------------------------------
  3222. INT 14 - FOSSIL - TRANSMIT NO WAIT
  3223.     AH = 0Bh
  3224.     AL = character
  3225.     DX = port number
  3226. Return: AX = result
  3227.         0000h character not accepted
  3228.         0001h character accepted
  3229. SeeAlso: AH=01h
  3230. --------S-140B-------------------------------
  3231. INT 14 - MBBIOS - READ BUFFER
  3232.     AH = 0Bh
  3233.     CX = size of buffer
  3234.     ES:DI -> buffer
  3235. Return: AH = composite line status (see #0208) formed by ORing all statuses
  3236.           on receive interrupts; bit 0 set if additional characters
  3237.           available
  3238.     AL = composite modem status (see #0209) formed by ORing all statuses
  3239.     CX = number of characters actually read
  3240.     DI updated
  3241. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  3242.       instead returning ES set to the segment of the buffer containing a
  3243.       received packet, or 0000h if no packets available; the buffer may
  3244.       be freed with AH=0Ch"MBBIOS"
  3245. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  3246. --------N-140B--DXFFFF-----------------------
  3247. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  3248.     AH = 0Bh
  3249.     DX = FFFFh
  3250.     AL = service name
  3251.         00h use parameter file or default
  3252.         01h use specified name
  3253.         ES:DI -> 16-byte blank-padded name
  3254.     BH = connection notification
  3255.         00h program awaiting connection, don't notify user
  3256.         01h notify user on connecting
  3257.     BL = connection type
  3258.         00h connection will use Connection Manager API
  3259. Return: AH = return code (00h-02h) (see #0207 at AH=00h/DX=FFFFh)
  3260.     AL = connection ID if AH=00h
  3261. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3262.       serial ports over an IPX or NetBIOS-based network
  3263. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  3264. --------S-140C-------------------------------
  3265. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  3266.     AH = 0Ch
  3267.     DX = port number
  3268. Return: AX = FFFFh character not available
  3269.     AX = 00xxh character xx available
  3270. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  3271. --------S-140C-------------------------------
  3272. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  3273.     AH = 0Ch
  3274.     ES = segment of buffer to free, or 0000h to allocate new buffer
  3275. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  3276. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  3277.       AH=0Ah and AH=0Bh
  3278. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  3279. --------N-140C--DXFFFF-----------------------
  3280. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  3281.     AH = 0Ch
  3282.     DX = FFFFh
  3283.     AL = connection ID from AH=0Bh/DX=FFFFh
  3284. Return: AH = return code (00h-03h) (see also #0207 at AH=00h/DX=FFFFh)
  3285.         03h not prepared for inbound connection
  3286.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  3287. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3288.       serial ports over an IPX or NetBIOS-based network
  3289. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  3290. --------S-140D-------------------------------
  3291. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  3292.     AH = 0Dh
  3293. Return: AX = result
  3294.         FFFFh character not available
  3295.         xxyyh standard IBM-style scan code
  3296. SeeAlso: AH=0Eh
  3297. --------S-140D-------------------------------
  3298. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  3299.     AH = 0Dh
  3300.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3301. Return: ES:BX -> CH_KEY_RDY flag (see #0243)
  3302. SeeAlso: AH=0Ah"Digiboard"
  3303.  
  3304. (Table 0243)
  3305. Values for Digiboard CH_KEY_RDY flag:
  3306.  00h    receive buffer empty
  3307.  FFh    characters available
  3308. --------S-140D-------------------------------
  3309. INT 14 - MBBIOS PACCOM support - SET TXD
  3310.     AH = 0Dh
  3311.     AL = new setting (FFh = 1.0)
  3312. Return: nothing
  3313. Desc:    specify the time from RTS to start or packet
  3314. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  3315. --------N-140D--DXFFFF-----------------------
  3316. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  3317.     AH = 0Dh
  3318.     DX = FFFFh
  3319. Return: AH = return code
  3320.         00h successful
  3321.         nonzero operation not terminated
  3322. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3323.       serial ports over an IPX or NetBIOS-based network
  3324. Desc:    end all Connection Client TSR activity to allow it to be removed from
  3325.       memory
  3326. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  3327. --------S-140D00-----------------------------
  3328. INT 14 - MBBIOS - GET AVAILABLE BYTES
  3329.     AX = 0D00h
  3330. Return: AX = bytes in transmit buffer
  3331.     CX = bytes in receive buffer
  3332. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  3333. --------S-140D01-----------------------------
  3334. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  3335.     AX = 0D01h
  3336. Return: nothing
  3337. Note:    this function lowers DTR, RTS, etc.
  3338. SeeAlso: AX=0D02h
  3339. --------S-140D02-----------------------------
  3340. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  3341.     AX = 0D02h
  3342. Return: nothing
  3343. Note:    this function raises DTR, RTS, etc.
  3344. SeeAlso: AX=0D01h
  3345. --------S-140D03-----------------------------
  3346. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  3347.     AX = 0D03h
  3348.     CL = new handshake byte
  3349. Return: CL = previous handshake byte
  3350. Note:    this function lowers DTR, RTS, etc.
  3351. --------S-140E-------------------------------
  3352. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  3353.     AH = 0Eh
  3354. Return: AX = xxyyh standard IBM-style scan code
  3355. SeeAlso: AH=0Dh"FOSSIL"
  3356. --------S-140E-------------------------------
  3357. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  3358.     AH = 0Eh
  3359.     CX = number of characters to write
  3360.     ES:BX -> string
  3361.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3362. Return: AX = number of characters actually written
  3363.     ZF clear if successful
  3364.     ZF set on error
  3365. SeeAlso: AH=0Fh"Digiboard"
  3366. --------S-140E-------------------------------
  3367. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  3368.     AH = 0Eh
  3369.     AL = new setting (FFh = 1.0)
  3370. Return: nothing
  3371. Desc:    specify the time from end of DCD to RTS
  3372. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  3373. --------N-140E--DXFFFF-----------------------
  3374. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  3375.     AH = 0Eh
  3376.     DX = FFFFh
  3377.     AL = connection ID from AH=04h/DX=FFFFh
  3378.     BL = RTS state (00h off, 01h on)
  3379. Return: AH = return code (00h-03h) (see also #0207 at AH=00h/DX=FFFFh)
  3380.         03h invalid request (BL not 00h or 01h)
  3381. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3382.       serial ports over an IPX or NetBIOS-based network
  3383. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  3384. --------S-140F-------------------------------
  3385. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  3386.     AH = 0Fh
  3387.     AL = bit mask describing requested flow control (see #0244)
  3388.     DX = port number
  3389. Return: nothing
  3390. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  3391.  
  3392. Bitfields for FOSSIL requested flow control:
  3393. Bit(s)    Description    (Table 0244)
  3394.  0    XON/XOFF on transmit (watch for XOFF while sending)
  3395.  1    CTS/RTS (CTS on transmit/RTS on receive)
  3396.  2    reserved
  3397.  3    XON/XOFF on receive (send XOFF when buffer near full)
  3398.  4-7    all 1
  3399. --------S-140F-------------------------------
  3400. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  3401.     AH = 0Fh
  3402.     CX = number of characters to read
  3403.     ES:BX -> buffer
  3404.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3405. Return: AX = number of characters read
  3406.     ZF clear if successful
  3407.     ZF set on error (line status or wrong number of characters)
  3408. SeeAlso: AH=0Eh"Digiboard"
  3409. --------S-140F-------------------------------
  3410. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  3411.     AH = 0Fh
  3412.     AL = new setting in clock ticks
  3413. Return: nothing
  3414. Desc:    specify the time from end of DCD to RTS
  3415. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  3416. --------N-140F--DXFFFF-----------------------
  3417. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  3418.     AH = 0Fh
  3419.     DX = FFFFh
  3420.     AL = connection ID
  3421.     CX = size of buffer or 0000h to get length of returned vector
  3422.     ES:DI -> buffer for connection parameter vector (see #0215)
  3423. Return: AH = return code (00h-02h,06h) (see #0207 at AH=00h/DX=FFFFh)
  3424.     CX = number of bytes which could not be returned because the given
  3425.           buffer was too small
  3426. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3427.       serial ports over an IPX or NetBIOS-based network
  3428. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  3429. --------S-1410-------------------------------
  3430. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  3431.     AH = 10h
  3432.     AL = bit mask
  3433.         bit 0: enable/disable ^C/^K checking
  3434.         bit 1: enable/disable the transmitter
  3435.     DX = port number
  3436. Return: nothing
  3437. SeeAlso: AH=0Fh"FOSSIL"
  3438. --------S-1410-------------------------------
  3439. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  3440.     AH = 10h
  3441.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3442. Return: AH = status
  3443.         00h successful
  3444.         FFh error
  3445. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  3446. --------S-1410-------------------------------
  3447. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  3448.     AH = 10h
  3449.     AL = new setting in clock ticks (should be at least 5 character times)
  3450. Return: nothing
  3451. Desc:    specify the time from start of last character to dropping RTS
  3452. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  3453. --------N-1410--DXFFFF-----------------------
  3454. INT 14 - Connection Manager - QUERY SERVICE NAMES
  3455.     AH = 10h
  3456.     DX = FFFFh
  3457.     CL = subfunction
  3458.         00h search first
  3459.         01h search next
  3460.     ES:DI -> pattern buffer (see #0245)
  3461. Return: AH = return code (00h,01h,03h,06h) (see also #0207 at AH=00h/DX=FFFFh)
  3462.         01h no (more) matching names
  3463.         03h invalid request
  3464.     ES:DI buffer filled with reply buffer (see #0245) containing matched
  3465.           name if AH=00h
  3466. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3467.       serial ports over an IPX or NetBIOS-based network
  3468. Desc:    obtain the names of groups and lines available for connection requests,
  3469.       and the names of active Connection Servers
  3470. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  3471.  
  3472. Format of Connection Manager pattern/reply buffer:
  3473. Offset    Size    Description    (Table 0245)
  3474.  00h    WORD    length of pattern (30h or 32h)
  3475.  02h 16 BYTEs    server pattern or name
  3476.  12h 16 BYTEs    group pattern or name
  3477.  22h 16 BYTEs    line pattern or name
  3478.  23h    BYTE    (optional) ???
  3479.  24h    BYTE    (optional, returned) current line status
  3480.         00h available
  3481.         01h out of service
  3482.         02h currently allocated to a connection
  3483. Note:    pattern may include '?' wildcard to match any character
  3484. --------S-1411-------------------------------
  3485. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  3486.     AH = 11h
  3487.     DH = row
  3488.     DL = column
  3489. Return: nothing
  3490. Note:    this is the same as INT 10/AH=02h
  3491. SeeAlso: AH=12h"FOSSIL"
  3492. --------S-1411-------------------------------
  3493. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  3494.     AH = 11h
  3495.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3496. Return: AH = status
  3497.         00h successful
  3498.         FFh error
  3499. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  3500. --------S-1411-------------------------------
  3501. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  3502.     AH = 11h
  3503.     DX = port number
  3504. Return: AL = status
  3505.         00h successful
  3506.         01h IRQ for port is shared
  3507.         02h IRQ was reserved
  3508. SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS"
  3509. --------S-1412-------------------------------
  3510. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  3511.     AH = 12h
  3512. Return: DH = row
  3513.     DL = column
  3514. Note:    this is the same as INT 10/AH=03h
  3515. SeeAlso: AH=11h"FOSSIL"
  3516. --------S-1412-------------------------------
  3517. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  3518.     AH = 12h
  3519.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3520. Return: AX = number of bytes free
  3521. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  3522. --------S-1412-------------------------------
  3523. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  3524.     AH = 12h
  3525.     DX = port number
  3526. Return: AH = status
  3527.         FFh port number invalid
  3528.     AL = line parameters (see #0208)
  3529.     AH = flow control configuration (see #0240 at AH=05h"PC-MOS")
  3530.     CX:BX = bps rate
  3531.     DL = XOFF character or 00h for none
  3532.     DH = XON character or 00h for none
  3533. --------S-1413-------------------------------
  3534. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  3535.     AH = 13h
  3536.     AL = character
  3537. Return: nothing
  3538. Note:    should not be called if it is unsafe to call DOS
  3539. SeeAlso: AH=15h
  3540. --------S-1413-------------------------------
  3541. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  3542.     AH = 13h
  3543.     DX = port number
  3544. Return: AH = status
  3545.         FFh port number invalid
  3546.         else
  3547.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  3548. SeeAlso: AH=17h"PC-MOS"
  3549. --------S-1414-------------------------------
  3550. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  3551.     AH = 14h
  3552.     AL = 01h enable watchdog
  3553.          00h disable watchdog
  3554.     DX = port number
  3555. Return: nothing
  3556. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  3557. --------S-1414-------------------------------
  3558. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  3559.     AH = 14h
  3560.     CX = number of characters in string
  3561.     DX = port number
  3562.     ES:BX -> string to be sent
  3563.     SI = timeout in timer ticks or 0000h for default
  3564. Return: AX = number of bytes actually sent
  3565.     ZF clear if successful
  3566.     ZF set on timeout
  3567. SeeAlso: AH=01h,AH=15h"PC-MOS"
  3568. --------S-1414-------------------------------
  3569. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  3570.     AH = 14h
  3571. Return: AX = number of boards installed
  3572. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  3573. --------S-1415-------------------------------
  3574. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  3575.     AH = 15h
  3576.     AL = character
  3577. Return: nothing
  3578. SeeAlso: AH=13h"FOSSIL"
  3579. --------S-1415-------------------------------
  3580. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  3581.     AH = 15h
  3582.     CX = size of buffer
  3583.     DX = port number
  3584.     ES:BX -> buffer for received characters
  3585.     SI = timeout in clock ticks or 0000h for default
  3586. Return: AX = number of characters actually read
  3587.     ZF set on timeout (no data available)
  3588. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  3589. --------S-1415-------------------------------
  3590. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  3591.     AH = 15h
  3592.     AL = new state (00h disabled, 01h enabled)
  3593. Return: AH = status
  3594.         00h successful
  3595.         80h error
  3596.         FFh error
  3597. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  3598. --------S-1416-------------------------------
  3599. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  3600.     AH = 16h
  3601.     AL = function
  3602.         00h = delete
  3603.         01h = add
  3604.     ES:DX -> routine to call
  3605. Return: AX = status
  3606.         0000h successful
  3607.         0001h unsuccessful
  3608. SeeAlso: AH=07h"FOSSIL"
  3609. --------S-1416-------------------------------
  3610. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  3611.     AH = 16h
  3612.     ES:BX -> calling driver's INT 14 entry point
  3613. Return: nothing
  3614. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3615.       operating system by The Software Link, Inc.
  3616. --------S-1416-------------------------------
  3617. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  3618.     AH = 16h
  3619.     AL = CCB command number (see #0246) (see also following entries)
  3620.     BL = byte 2
  3621.     BH = byte 3
  3622.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  3623.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3624. Return: AH = status
  3625.         00h successful
  3626.         80h error
  3627.         FFh error
  3628. SeeAlso: AX=1646h,AH=18h"Digiboard"
  3629.  
  3630. (Table 0246)
  3631. Values for Digiboard CCB command number:
  3632.  40h    Set Receive Mid Water Mark
  3633.  41h    Set Receive High Water Mark
  3634.  42h    Flush Receive Buffer
  3635.  43h    Flush Transmit Buffer
  3636.  44h    Transmit Pause
  3637.  45h    Transmit Resume
  3638.  46h    Set Interrupt to Host Mask
  3639.  47h    Set Baud, Data, Stop and Parity
  3640.  48h    Send Break
  3641.  49h    Set Modem Lines
  3642.  4Ah    Set Break Count
  3643.  4Bh    Set Handshake
  3644.  4Ch    Set Xon/Xoff Characters
  3645.  4Dh    Set Transmit Mid Water Mark
  3646.  4Eh    IRQ Polling Timer to Host
  3647.  4Fh    Buffer Set All
  3648.  50h    Port On
  3649.  51h    Port Off
  3650.  52h    Receive Pause
  3651.  53h    Special Character Interrupt
  3652.  54h    RS-422 Enable
  3653. --------S-141646-----------------------------
  3654. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  3655.     AX = 1646h
  3656.     BL = bits to set
  3657.     BH = bits to clear
  3658.     CL = byte 1
  3659.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3660. Return: AH = status
  3661.         00h successful
  3662.         80h error
  3663.         FFh error
  3664. SeeAlso: AH=16h"Digiboard",AX=1647h
  3665. --------S-141647-----------------------------
  3666. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  3667.     AX = 1647h
  3668.     BL = baud
  3669.     BH = datatype
  3670.     CL = byte 1
  3671.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3672. Return: AH = status
  3673.         00h successful
  3674.         80h error
  3675.         FFh error
  3676. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  3677. --------S-141649-----------------------------
  3678. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  3679.     AX = 1649h
  3680.     BL = bits to set
  3681.     BH = bits to clear
  3682.     CL = byte 1
  3683.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3684. Return: AH = status
  3685.         00h successful
  3686.         80h error
  3687.         FFh error
  3688. SeeAlso: AH=16h"Digiboard",AX=1647h
  3689. --------S-14164A-----------------------------
  3690. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  3691.     AX = 164Ah
  3692.     BL = break count
  3693.     CL = byte 1
  3694.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3695. Return: AH = status
  3696.         00h successful
  3697.         80h error
  3698.         FFh error
  3699. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  3700. --------S-14164B-----------------------------
  3701. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  3702.     AX = 164Bh
  3703.     BL = bits to set
  3704.     BH = bits to clear
  3705.     CL = byte 1
  3706.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3707. Return: AH = status
  3708.         00h successful
  3709.         80h error
  3710.         FFh error
  3711. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  3712. --------S-14164C-----------------------------
  3713. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  3714.     AX = 164Ch
  3715.     BL = XON character
  3716.     BH = XOFF character
  3717.     CL = byte 1
  3718.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3719. Return: AH = status
  3720.         00h successful
  3721.         80h error
  3722.         FFh error
  3723. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  3724. --------S-14164D-----------------------------
  3725. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  3726.     AX = 164Dh
  3727.     BX = new mid-water mark
  3728.     CL = byte 1
  3729.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3730. Return: AH = status
  3731.         00h successful
  3732.         80h error
  3733.         FFh error
  3734. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  3735. --------S-14164E-----------------------------
  3736. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  3737.     AX = 164Eh
  3738.     BL = ticks
  3739.     BH = ???
  3740.     CL = mode
  3741.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3742. Return: AH = status
  3743.         00h successful
  3744.         80h error
  3745.         FFh error
  3746. SeeAlso: AH=16h"Digiboard",AX=164Dh
  3747. --------S-14164F-----------------------------
  3748. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  3749.     AX = 164Fh
  3750.     BL = size
  3751.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3752. Return: AH = status
  3753.         00h successful
  3754.         80h error
  3755.         FFh error
  3756. SeeAlso: AH=16h"Digiboard",AX=164Dh
  3757. --------S-141653-----------------------------
  3758. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  3759.     AX = 1653h
  3760.     BL = enable/disable
  3761.     BH = special character
  3762.     CL = byte 1
  3763.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3764. Return: AH = status
  3765.         00h successful
  3766.         80h error
  3767.         FFh error
  3768. SeeAlso: AH=16h"Digiboard",AX=1646h
  3769. --------S-1417-------------------------------
  3770. INT 14 - FOSSIL - REBOOT SYSTEM
  3771.     AH = 17h
  3772.     AL = method
  3773.         00h = cold boot
  3774.         01h = warm boot
  3775. SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
  3776. --------S-1417-------------------------------
  3777. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  3778.     AH = 17h
  3779.     AL = new value for UART's modem control register
  3780.     DX = port number
  3781. Return: nothing
  3782. --------S-1418-------------------------------
  3783. INT 14 - FOSSIL - READ BLOCK
  3784.     AH = 18h
  3785.     CX = maximum number of characters to transfer
  3786.     DX = port number
  3787.     ES:DI -> user buffer
  3788. Return: AX = number of characters transferred
  3789. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  3790. --------S-1418-------------------------------
  3791. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  3792.     AH = 18h
  3793.     ES:BX -> 16-byte command string
  3794.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3795. Return: AH = status
  3796.         00h successful
  3797.         80h timeout
  3798.     AL = mailbox status
  3799.         00h no errors
  3800.         8Xh BIOS error
  3801.     ES:BX buffer filled in with mailbox string
  3802.     ZF clear if no errors
  3803.     ZF set if either status byte contains an error code
  3804. SeeAlso: AH=16h"Digiboard"
  3805. --------S-1418-------------------------------
  3806. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  3807.     AH = 18h
  3808.     DX = port number
  3809. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  3810.         driver
  3811. SeeAlso: AH=06h"PC-MOS"
  3812. --------S-1419-------------------------------
  3813. INT 14 - FOSSIL - WRITE BLOCK
  3814.     AH = 19h
  3815.     CX = maximum number of characters to transfer
  3816.     DX = port number
  3817.     ES:DI -> user buffer
  3818. Return: AX = number of characters transferred
  3819. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  3820. --------S-1419-------------------------------
  3821. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  3822.     AH = 19h
  3823.     BL = flag
  3824.         00h disable special character interrupt
  3825.         FFh enable interrupt
  3826.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3827. Return: AH = status
  3828.         00h successful
  3829.         FFh failed
  3830. SeeAlso: AH=1Ah"Digiboard"
  3831. --------S-1419-------------------------------
  3832. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  3833.     AH = 19h
  3834.     AL = what to flush
  3835.         bit 0: input buffer
  3836.         bit 1: output buffer
  3837.     DX = port number
  3838. Return: nothing
  3839. SeeAlso: AH=09h"PC-MOS"
  3840. --------S-141A-------------------------------
  3841. INT 14 - FOSSIL - BREAK BEGIN OR END
  3842.     AH = 1Ah
  3843.     AL = 00h stop sending 'break'
  3844.          01h start sending 'break'
  3845.     DX = port number
  3846. Return: nothing
  3847. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  3848. --------S-141A-------------------------------
  3849. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  3850.     AH = 1Ah
  3851.     BX = subfunction
  3852.         00h return pointer to special character flag byte
  3853.         01h return pointer to special character counter word
  3854.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3855. Return: ES:BX -> special character flag or counter
  3856. Notes:    flag is FFh if one or more special characters are in the receive
  3857.       buffer; it is 00h and the counter is invalid if no special characters
  3858.       are in the receive buffer
  3859.     counter (if valid) contains the number of characters in the receive
  3860.       buffer up to and including the last-received special character
  3861. --------S-141B-------------------------------
  3862. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  3863.     AH = 1Bh
  3864.     DX = port number
  3865.     CX = size of user buffer
  3866.     ES:DI -> user buffer for driver info (see #0247)
  3867. Return: AX = number of characters transferred
  3868.     CX = 3058h ("0X") (X00 FOSSIL only)
  3869.     DX = 2030h (" 0") (X00 FOSSIL only)
  3870.  
  3871. Format of FOSSIL driver info:
  3872. Offset    Size    Description    (Table 0247)
  3873.  00h    WORD    size of structure in bytes
  3874.  02h    BYTE    FOSSIL spec driver conforms to
  3875.  03h    BYTE    revision level of this specific driver
  3876.  04h    DWORD    pointer to ASCIZ identification string
  3877.  08h    WORD    size of the input buffer
  3878.  0Ah    WORD    number of bytes left in buffer
  3879.  0Ch    WORD    size of the output buffer
  3880.  0Eh    WORD    number of bytes left in buffer
  3881.  10h    BYTE    width of screen
  3882.  11h    BYTE    length of screen
  3883.  12h    BYTE    actual baud rate, computer to modem
  3884. --------S-141C-------------------------------
  3885. INT 14 - X00 FOSSIL - ACTIVATE PORT
  3886.     AH = 1Ch
  3887.     DX = port number
  3888. Return: AX = 1954h if successful
  3889.     BL = maximum function number supported (not including 7Eh and above)
  3890.     BH = revision of FOSSIL specification supported
  3891. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  3892.       with the PS/2 BIOS in a future release
  3893. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  3894. --------S-141D-------------------------------
  3895. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  3896.     AH = 1Dh
  3897.     DX = port number
  3898. Return: none
  3899. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  3900.       with the PS/2 BIOS in a future release
  3901.     ignored if the port was never activated with AH=04h or AH=1Ch
  3902. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  3903. --------S-141E-------------------------------
  3904. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  3905.     AH = 1Eh
  3906.     AL = break status
  3907.         00h if break
  3908.         01h if no break
  3909.     BH = parity (see #0248)
  3910.     BL = number of stop bits
  3911.         00h one stop bit
  3912.         01h two stop bits (1.5 if 5 bit word length)
  3913.     CH = word length (see #0249)
  3914.     CL = bps rate (see #0250)
  3915.     DX = port number
  3916. Return: AX = port status code (see #0208,#0209)
  3917. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  3918.     if the port was locked at X00 load time, the appropriate parameters are
  3919.       ignored
  3920. SeeAlso: AH=00h,AH=04h"SERIAL"
  3921.  
  3922. (Table 0248)
  3923. Values for X00 FOSSIL parity:
  3924.  00h    no parity
  3925.  01h    odd parity
  3926.  02h    even parity
  3927.  03h    stick parity odd
  3928.  04h    stick parity even
  3929. SeeAlso: #0211,#0249,#0250
  3930.  
  3931. (Table 0249)
  3932. Values for X00 FOSSIL word length:
  3933.  00h    5 bits
  3934.  01h    6 bits
  3935.  02h    7 bits
  3936.  03h    8 bits
  3937. SeeAlso: #0212,#0248,#0250
  3938.  
  3939. (Table 0250)
  3940. Values for X00 FOSSIL bps rate:
  3941.  00h    110
  3942.  01h    150
  3943.  02h    300
  3944.  03h    600
  3945.  04h    1200
  3946.  05h    2400
  3947.  06h    4800
  3948.  07h    9600
  3949.  08h    19200
  3950. SeeAlso: #0213,#0248,#0249
  3951. --------S-141E------------------------------------
  3952. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  3953.     AH = 1Eh
  3954.     CX = channel number (00h COM1, 01h COM2, ...)
  3955.     DS:BX -> buffer for communications parameters (see #0251)
  3956. Return: DS:BX buffer filled
  3957. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  3958.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  3959. SeeAlso: AH=20h"HUNTER"
  3960.  
  3961. Format of HUNTER 16 communications parameters:
  3962. Offset    Size    Description    (Table 0251)
  3963.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  3964.  01h    BYTE    port number (00h COM1, 01h COM2)
  3965.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  3966.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  3967.  03h    BYTE    data bits (01h seven, 02h eight)
  3968.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  3969.  05h    BYTE    stop bits (00h one, 01h two)
  3970.  06h    BYTE    handshake (see #0252)
  3971.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  3972.  08h    BYTE    Nulls after CR (0-20)
  3973.  09h    BYTE    LF (00h off, 01h on)
  3974.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  3975.                80h: Serig off
  3976.  0Bh    BYTE    echo (00h off, 01h on)
  3977.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  3978.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  3979.  0Eh  5 BYTEs    reserved
  3980.  
  3981. Bitfields for HUNTER 16 handshake:
  3982. Bit(s)    Description    (Table 0252)
  3983.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  3984.  2    DTR enabled
  3985.  4    CTS enabled
  3986.  5    DSR enabled
  3987.  6    DCD enabled
  3988. --------S-141F-------------------------------
  3989. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  3990.     AH = 1Fh
  3991.     DX = port number
  3992.     AL = direction
  3993.         00h read modem control register
  3994.         Return: BL = modem control register (see #0253)
  3995.             AH = status
  3996.         01h write modem control register
  3997.         BL = modem control register (see #0253)
  3998.         Return: AX = status
  3999. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  4000.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  4001. SeeAlso: AH=00h,AH=05h"SERIAL"
  4002.  
  4003. Bitfields for X00 FOSSIL modem control register:
  4004. Bit(s)    Description    (Table 0253)
  4005.  0    data terminal ready
  4006.  1    request to send
  4007.  2    OUT1
  4008.  3    OUT2 (interrupts) enabled
  4009.  4    LOOP
  4010.  5-7    reserved
  4011. --------S-1420-------------------------------
  4012. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  4013.     AH = 20h
  4014.     DX = port number
  4015. Return: AH = 00h if character was available
  4016.         AL = next character (removed from receive buffer)
  4017.     AX = FFFFh if no character available
  4018. SeeAlso: AH=0Ch,AH=21h"X00"
  4019. --------S-1420-------------------------------
  4020. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  4021.     AH = 20h
  4022.     AL = logical port (01h COM1, 02h COM2)
  4023.     DX = physical port number
  4024. Return: AX = status
  4025.         0000h successful
  4026.         FFFFh failed
  4027. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  4028. --------S-1420-------------------------------
  4029. INT 14 - MultiDOS Plus - INITIALIZE PORT
  4030.     AH = 20h
  4031.     AL = port parameters (see #0204 at AH=00h"SERIAL")
  4032.     DX = port number (0-3)
  4033. Return: AH = status
  4034.         00h successful
  4035.         41h no such port
  4036.         64h monitor mode already active
  4037. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  4038. --------S-1420-------------------------------
  4039. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  4040.     AH = 20h
  4041.     DX = port number
  4042. Return: AX = number of bytes in output buffer
  4043. SeeAlso: AH=0Ah"Digiboard"
  4044. --------S-1420------------------------------------
  4045. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  4046.     AH = 20h
  4047.     CX = channel number (00h COM1, 01h COM2, ...)
  4048.     DS:BX -> buffer with communications parameter (see #0251)
  4049. Return: AX = status
  4050.         0000h successful
  4051.         0001h invalid parameter
  4052. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  4053. --------S-1421-------------------------------
  4054. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  4055.     AH = 21h
  4056.     AL = character
  4057.     DX = port number
  4058. Return: nothing
  4059. Notes:    the given character is inserted at the end of the receive buffer as if
  4060.       it had just arrived from the serial port; all normal receive
  4061.       processing (XON/XOFF, ^C/^K) is performed on the character
  4062.     fully re-entrant
  4063. SeeAlso: AH=20h"X00"
  4064. --------S-1421-------------------------------
  4065. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  4066.     AH = 21h
  4067.     DX = physical port number
  4068. Return: AX = status
  4069.         0000h successful
  4070.         FFFFh failed
  4071. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  4072. --------S-1421-------------------------------
  4073. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  4074.     AH = 21h
  4075.     AL = character to send
  4076.     DX = port number
  4077. Return: AH = status (see #0254)
  4078. Note:    monitor mode must have been turned on with AH=24h before calling
  4079. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  4080.  
  4081. (Table 0254)
  4082. Values for MultiDOS Plus status:
  4083.  00h    successful
  4084.  39h    no DSR or CTS
  4085.  3Ch    no DSR
  4086.  3Bh    no CTS
  4087.  41h    no such port
  4088.  42h    monitor mode not active
  4089.  97h    timed out
  4090. --------S-1421-------------------------------
  4091. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  4092.     AH = 21h
  4093.     AL = char to send
  4094.     DX = port number
  4095.     SI = timeout in timer ticks (0000h = default)
  4096. Return: after character is sent or timeout expires
  4097. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4098.       operating system by The Software Link, Inc.
  4099. SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS"
  4100. --------S-1421------------------------------------
  4101. INT 14 - HUNTER 16 - EXTENDED CONTROL
  4102.     AH = 21h
  4103.     AL = command
  4104.         01h force transmission of buffer
  4105.         02h clear transmit buffer
  4106.         03h clear receive buffer
  4107.     DX = port (00h COM1, 01h COM2)
  4108. Return: AH = extended status
  4109. Desc:    executes the command on the selected port
  4110. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  4111. --------S-1422-------------------------------
  4112. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  4113.     AH = 22h
  4114.     AL = logical port (01h COM1, 02h COM2)
  4115. Return: AX = status (0000h successful)
  4116. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  4117. --------S-1422-------------------------------
  4118. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  4119.     AH = 22h
  4120.     DX = port number
  4121. Return: AH = status (see also AH=21h"MultiDOS")
  4122.         00h successful
  4123.         AL = character
  4124.         3Dh framing and parity error
  4125.         3Eh overrun error
  4126.         3Fh framing error
  4127.         40h parity error
  4128.         96h ring buffer overflow
  4129. Note:    if no character is available, this function waits until a character
  4130.       arrives or an implementation-dependent timeout elapses
  4131. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  4132. --------S-1422-------------------------------
  4133. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  4134.     AH = 22h
  4135.     DX = port number
  4136.     SI = timeout in timer ticks (0000h = default)
  4137. Return: AH = port status (see also #0208 at AH=03h)
  4138.          bit 7 = 1 indicates time-out
  4139.     AL = character received
  4140. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4141.       operating system by The Software Link, Inc.
  4142. SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS"
  4143. --------S-1422------------------------------------
  4144. INT 14 - HUNTER 16 - EXTENDED STATUS
  4145.     AH = 22h
  4146.     DX = port (00h COM1, 01h COM2)
  4147. Return: AH = extended status
  4148.     BX = number of characters in input buffer
  4149.     CX = number of characters in output buffer
  4150. Desc:    returns the most recent Extended Status code for the port
  4151. SeeAlso: AH=21h"HUNTER"
  4152. --------S-1423-------------------------------
  4153. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  4154.     AH = 23h
  4155.     AL = logical port (01h COM1, 02h COM2)
  4156.     DH = user ID
  4157.     DL = process ID (DH,DL both FFh for current task)
  4158. Return: AL = MW386 port mode (see #0255)
  4159.     CX = MW386 port number
  4160.     DH = owner's user ID
  4161.     DL = owner's task ID
  4162. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  4163.  
  4164. Bitfields for MW386 port mode:
  4165. Bit(s)    Description    (Table 0255)
  4166.  0    port is shared (spooler only)
  4167.  1    port is spooled instead of direct (spooler only)
  4168.  2    port is assigned as logical COM device, not in spooler
  4169.  3    port is free
  4170. --------S-1423-------------------------------
  4171. INT 14 - MultiDOS Plus - GET PORT STATUS
  4172.     AH = 23h
  4173.     DX = port number
  4174. Return: AH = line status (see #0208 at AH=03h)
  4175.     AL = modem status (see #0209 at AH=03h)
  4176. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  4177. --------S-1423-------------------------------
  4178. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  4179.     AH = 23h
  4180.     DX = port number
  4181.     BX = TCB segment/selector address of owner task
  4182. Return: nothing
  4183. SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS"
  4184. --------S-1423------------------------------------
  4185. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  4186.     AH = 23h
  4187.     BH = handshake line to set (00h RTS, 01h DTR)
  4188.     BL = new level (00h low, 01h high)
  4189. Return: nothing
  4190. Desc:    sets the handshake lines of COM1 to the desired level
  4191. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  4192. --------S-1424-------------------------------
  4193. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  4194.     AH = 24h
  4195.     CX = physical I/O port number
  4196.     DS:DX -> configuration table (see #0256)
  4197. Return: AH = 00h
  4198. Note:    invalid port numbers are merely ignored
  4199. SeeAlso: INT 17/AH=96h
  4200.  
  4201. Format of Alloy MW386 configuration table:
  4202. Offset    Size    Description    (Table 0256)
  4203.  00h    BYTE    baud rate (see #0257)
  4204.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  4205.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  4206.  03h    BYTE    stop bits (00h=1, 01h=2)
  4207.  04h    BYTE    receive flow control
  4208.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  4209.  05h    BYTE    transmit flow control (as for receive)
  4210.  
  4211. (Table 0257)
  4212. Values for Alloy MW386 baud rate:
  4213.  00h    38400
  4214.  01h    19200
  4215.  02h    9600
  4216.  03h    7200
  4217.  04h    4800
  4218.  05h    3600
  4219.  06h    2400
  4220.  07h    2000
  4221.  08h    1200
  4222.  09h    600
  4223.  0Ah    300
  4224.  0Bh    150
  4225.  0Ch    134.5
  4226. SeeAlso: #0213
  4227. --------S-1424-------------------------------
  4228. INT 14 - MultiDOS Plus - SET MONITOR MODE
  4229.     AH = 24h
  4230.     AL = port status storage
  4231.         00h single status for entire receive buffer
  4232.         01h separate status kept for each byte in receive buffer
  4233.     DX = port number
  4234. Return: AH = status
  4235.         00h successful
  4236.         3Ah invalid status storage specified
  4237.         41h no such port
  4238.         64h monitor mode already active
  4239. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  4240.       port
  4241. SeeAlso: AH=20h"MultiDOS",AH=25h
  4242. --------S-1424-------------------------------
  4243. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  4244.     AH = 24h
  4245. Return: ???
  4246. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4247.       operating system by The Software Link, Inc.
  4248. --------S-1424------------------------------------
  4249. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  4250.     AH = 24h
  4251.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  4252. Return: nothing
  4253. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  4254. --------S-1425-------------------------------
  4255. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  4256.     AH = 25h
  4257.     AL = function
  4258.         00h only clear buffers
  4259.         01h clear buffers and deactivate
  4260.     DX = port number
  4261. Return: AH = status
  4262.         00h successful
  4263.         3Ah invalid function
  4264.         41h no such port
  4265.         42h monitor mode not active
  4266. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  4267. --------S-1425------------------------------------
  4268. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  4269.     AH = 25h
  4270.     AL = new state of RS232 drivers (00h off, 01h on)
  4271. Return: nothing
  4272. Note:    this function can be used to save power by turning off the RS232
  4273.       drivers.  It can also be used to turn on the RS232 drivers before
  4274.       connecting to a remote system to avoid "garbage" while the drivers
  4275.       turn on.
  4276. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  4277. --------S-1426------------------------------------
  4278. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  4279.     AH = 26h
  4280.     AL = 00h enable RI power up
  4281.         else disable RI power up
  4282. Return: nothing
  4283. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  4284. --------S-1427-------------------------------
  4285. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  4286.     AH = 27h
  4287.     DX = port number
  4288. Return: AH = status
  4289.         00h successful
  4290.         41h no such port
  4291.         42h monitor mode not active
  4292.     AL = number of characters in receive buffer
  4293. --------S-1427------------------------------------
  4294. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  4295.     AH = 27h
  4296.     AL = number of extended protocols installed (since last call)
  4297. Return: AL = total number installed, including new ones
  4298. Desc:    Returns the number of extended communication protocols installed
  4299. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  4300. --------S-1428------------------------------------
  4301. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  4302.     AH = 28h
  4303.     AL = protocol handle
  4304.     DS:BX -> 8 character buffer for protocol name
  4305. Return: AH = status
  4306.         00h successful
  4307.         DS:BX buffer filled with the protocol name
  4308.         FFh failed
  4309. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  4310. --------S-1429------------------------------------
  4311. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  4312.     AH = 29h
  4313.     DS:BX -> buffer containing the protocol name
  4314. Return: AH = status
  4315.         00h successful
  4316.         AL = handle
  4317.         FFh failed
  4318. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  4319. --------S-142A------------------------------------
  4320. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  4321.     AH = 2Ah
  4322.     AL = protocol handle
  4323. Return: AH = status
  4324.         00h successful
  4325.         FFh failed
  4326.     AL = menu handle
  4327. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  4328. --------S-142B------------------------------------
  4329. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  4330.     AH = 2Bh
  4331.     AL = protocol handle
  4332.     DS:BX -> buffer for extended protocol parameters
  4333. Return: AH = status
  4334.         00h successful
  4335.         DS:BX buffer filled with extended parameters
  4336.         FFh failed
  4337. SeeAlso: AH=2Ah"HUNTER"
  4338. --------S-142C00----------------------------------
  4339. INT 14 - HUNTER 16 - GET DTR
  4340.     AX = 2C00h
  4341. Return: AH = 00h
  4342.     BL = current state
  4343.         00h     normal DTR operation
  4344.         else DTR is forced high
  4345. Desc:    Indicates whether the DTR signal on COM1 is forced high
  4346. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  4347.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  4348. SeeAlso: AH=2Ch"SET DTR"
  4349. --------S-142C------------------------------------
  4350. INT 14 - HUNTER 16 - SET DTR
  4351.     AH = 2Ch
  4352.     AL nonzero
  4353.     BL = new state
  4354.         00h     normal operation
  4355.         else force DTR high
  4356. Return: AH = 00h
  4357. Desc:    determine whether the DTR signal on COM1 should be forced high
  4358. SeeAlso: AX=2C00h
  4359. --------N-1436-------------------------------
  4360. INT 14 - ComShare - INSTALLATION CHECK
  4361.     AH = 36h
  4362. Return: AX = 4353h ('CS') if installed
  4363.         BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
  4364.         CX reserved for future use
  4365.         WORD DX:[0100h] = ComShare version number
  4366. Program: The ComShare System is a modem-sharing program for NetBIOS and
  4367.       NetWare-based networks by NashaKala Corporation
  4368. Note:    ComShare supports the standard BIOS INT 14h calls with a slight
  4369.       change in the interpretation of speed values
  4370.       (see #0213 at AH=04h"SERIAL")
  4371. SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh
  4372. --------t-144000-----------------------------
  4373. INT 14 - I1541 - INSTALLATION CHECK
  4374.     AX = 4000h
  4375. Return: AX = 1541h if installed
  4376.         BH = I1541 major version (BCD)
  4377.         BL = I1541 minor version (BCD)
  4378.         CX = 0000h
  4379. --------t-144001-----------------------------
  4380. INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED
  4381.     AX = 4001h
  4382. Return: CF clear if connected
  4383.         BL = LPT number where 1541 cable is connected (1..3)
  4384.     CF set if cable not connected
  4385. Desc:    scan all the LPT ports searching for the adapter cable
  4386. SeeAlso: AX=4000h
  4387. --------t-144002-----------------------------
  4388. INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT
  4389.     AX = 4002h
  4390.     BL = LPT number (1..3)
  4391. Return: CF clear if successful
  4392.     CF set otherwise
  4393. Desc:    force the input output routines to work on the cable placed on LPT BL
  4394. SeeAlso: AX=4001h
  4395. --------t-144003-----------------------------
  4396. INT 14 - I1541 - RESET ALL DEVICES
  4397.     AX = 4003h
  4398. Return: nothing
  4399. Desc:    send a reset pulse of 100ms to all CBM devices
  4400. Note:    it is necessary to wait about 2 seconds after reset before executing
  4401.       other    instructions
  4402. SeeAlso: AX=4000h,AX=4004h
  4403. --------t-144004-----------------------------
  4404. INT 14 - I1541 - SEND LISTEN SIGNAL
  4405.     AX = 4004h
  4406.     BH = device number (0..15)
  4407. Return: CF clear if successful
  4408.     CF set on error
  4409.         AL = error number (see #0258)
  4410. SeeAlso: AX=4005h,AX=4006h
  4411.  
  4412. (Table 0258)
  4413. Values for I1541 error number:
  4414.  00h    device not present
  4415.  01h    listener not ready
  4416.  02h    missing EOI time-out
  4417.  03h    EOI not completed
  4418.  04h    data not released
  4419.  05h    frame error
  4420. --------t-144005-----------------------------
  4421. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN
  4422.     AX = 4005h
  4423.     BL = channel number and mode (see #0259)
  4424. Return: CF clear if successful
  4425.     CF set on error
  4426.         AL = error number (see #0258)
  4427. SeeAlso: AX=4004h,AX=4006h
  4428.  
  4429. Bitfields for I1541 channel number and mode:
  4430. Bit(s)    Description    (Table 0259)
  4431.  7-4    mode
  4432.     0110 read/write
  4433.     1110 close channel
  4434.     1111 open channel
  4435.  3-0    channel number
  4436. --------t-144006-----------------------------
  4437. INT 14 - I1541 - SEND UNLISTEN SIGNAL
  4438.     AX = 4006h
  4439. Return: CF clear if successful
  4440.     CF set on error
  4441.         AL = error number (see #0258)
  4442. SeeAlso: AX=4004h,AX=4005h
  4443. --------t-144007-----------------------------
  4444. INT 14 - I1541 - SEND TALK SIGNAL
  4445.     AX = 4007h
  4446.     BH = device number (0-15)
  4447. Return: CF clear if successful
  4448.     CF set on error
  4449.         AL = error number (see #0258)
  4450. SeeAlso: AX=4008h,AX=4009h
  4451. --------t-144008-----------------------------
  4452. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK
  4453.     AX = 4008h
  4454.     BL = channel number and mode (see #0259)
  4455. Return: CF clear if successful
  4456.     CF set on error
  4457.         AL = error number (see also #0258)
  4458.         40h turn around time-out
  4459. SeeAlso: AX=4007h,AX=4009h
  4460. --------t-144009-----------------------------
  4461. INT 14 - I1541 - SEND UNTALK SIGNAL
  4462.     AX = 4009h
  4463. Return: CF clear if successful
  4464.     CF set on error
  4465.        AL = error number (see #0258)
  4466. SeeAlso: AX=4007h,AX=4008h
  4467. --------t-14400A-----------------------------
  4468. INT 14 - I1541 - SEND A BYTE TO A DEVICE
  4469.     AX = 400Ah
  4470.     BL = byte to send
  4471.     CL = last-byte flag
  4472.         00h more bytes follow
  4473.         01h this is the last byte to be sent
  4474. Return: CF clear if successful
  4475.     CF set on error
  4476.         AL = error number (see #0258)
  4477. SeeAlso: AX=4000h,AX=400Bh
  4478. --------t-14400B-----------------------------
  4479. INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE
  4480.     AX = 400Bh
  4481. Return: CF clear if successful
  4482.         AL = byte received
  4483.         CL = last-byte flag
  4484.         00h more bytes to follow
  4485.         01h received byte is the last
  4486.     CF set on error
  4487.         AL = error number
  4488.         80h EOI response required
  4489.         81h talker not ready
  4490.         82h clock not set
  4491.         83h clock not released
  4492.         CL = 00h
  4493. SeeAlso: AX=4000h,AX=400Ah
  4494. --------t-14400C-----------------------------
  4495. INT 14 - I1541 - WAIT
  4496.     AX = 400Ch
  4497.     CX = number of 838ns microticks to wait (0000h means 65536, ~55ms)
  4498. Return: after wait period elapses
  4499. SeeAlso: AX=4000h,AX=400Dh
  4500. --------t-14400D-----------------------------
  4501. INT 14 - I1541 - LONGWAIT
  4502.     AX = 400Dh
  4503.     DX:CX = number of 838ns microticks to wait
  4504.           (0000h:0000h means 4294967296, about one hour)
  4505. Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180
  4506. SeeAlso: AX=4000h,AX=400Ch
  4507. --------t-14400E-----------------------------
  4508. INT 14 - I1541 - GET INFO
  4509.     AX = 400Eh
  4510. Return: AX = LPT port I/O address in use (0000h if no cable in use)
  4511.     BL = LPT number (1..3) in use (00h if no cable in use)
  4512.     CF set if the cable is auto-detectable
  4513.     CF clear if cable could not be auto-detected or is not present
  4514. SeeAlso: AX=4000h
  4515. --------S-1456-------------------------------
  4516. INT 14 U - BWCOM14 - INSTALLATION CHECK
  4517.     AH = 56h
  4518. Return: CX = 0001h if installed
  4519. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  4520.       connected to the serial port) distributed as part of the
  4521.       Beame&Whiteside BW-NFS package
  4522. SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
  4523. --------S-1457-------------------------------
  4524. INT 14 U - BWCOM14 - INITIALIZE
  4525.     AH = 57h
  4526.     DL = port number
  4527. Return: AL = initialization status (00h successful, 01h already initialized)
  4528.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  4529. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  4530.       port will be handled by BWCOM14 until AH=58h is called
  4531. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  4532. --------S-1458-------------------------------
  4533. INT 14 U - BWCOM14 - SHUTDOWN
  4534.     AH = 58h
  4535. Return: CX = status (0001h successful, 0002h not initialized)
  4536. Note:    after this call, BWCOM14 will no longer redirect the COM port
  4537. SeeAlso: AH=56h,AH=57h
  4538. --------N-146F--BXFFFE-----------------------
  4539. INT 14 U - Connection Manager - ???
  4540.     AH = 6Fh
  4541.     BX = FFFEh
  4542.     ???
  4543. Return: ???
  4544. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4545.       serial ports over an IPX or NetBIOS-based network
  4546. --------N-146F--BXFFFF-----------------------
  4547. INT 14 - Connection Manager - INSTALLATION CHECK
  4548.     AH = 6Fh
  4549.     BX = FFFFh
  4550. Return: DX:BX -> Connection Manager Communication Table if installed
  4551.     BX = FFFFh if not installed
  4552. SeeAlso: AH=0Dh/DX=FFFFh
  4553. --------S-146F00-----------------------------
  4554. INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
  4555.     AX = 6F00h
  4556.     BX <> 4850h (usually set to 0000h for simplicity)
  4557. Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
  4558.     AX destroyed
  4559. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4560. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
  4561. SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
  4562. --------S-146F01-----------------------------
  4563. INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
  4564.     AX = 6F01h
  4565.     BX = port attributes (see #0260)
  4566.     DX = port number (0-3)
  4567. Return: AH = line status (see #0208)
  4568.     AL = modem status (see #0209)
  4569. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4570. SeeAlso: AX=6F00h
  4571.  
  4572. Bitfields for HP Vectra Extended BIOS serial port attributes:
  4573. Bit(s)    Description    (Table 0260)
  4574.  8-5    data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
  4575.  4-3    parity
  4576.     00 none
  4577.     01 odd
  4578.     10 none
  4579.     11 even
  4580.  2    stop bits (0 = one, 1 = two)
  4581.  1-0    bits per character
  4582.     10 seven-bit characters
  4583.     11 eight-bit characters
  4584.     0x undefined
  4585. --------S-146F02-----------------------------
  4586. INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
  4587.     AX = 6F02h
  4588.     CX = number of characters in buffer
  4589.     DX = port number (0-3)
  4590.     ES:DI -> buffer containing characters
  4591. Return: AH = line status (see #0208)
  4592.     AL = modem status (see #0209)
  4593.     CX = number of bytes actually sent
  4594.     ES:DI -> next byte to be transferred (unchanged if all bytes sent)
  4595. Desc:    send characters from the specified buffer until all characters have
  4596.       been sent or an error/timeout is encountered
  4597. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4598. SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
  4599. --------S-146F03-----------------------------
  4600. INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
  4601.     AX = 6F03h
  4602.     CX = size of buffer
  4603.     DX = port number (0-3)
  4604.     ES:DI -> buffer for received characters
  4605. Return: AH = line status (see #0208)
  4606.     ---on error (AH bit 7 set)---
  4607.        AL = 00h
  4608.        ES:DI -> next byte to be transferred
  4609.     ---if successful---
  4610.        AL = last byte read
  4611.        ES:DI unchanged
  4612.     CX = number of bytes read
  4613. Desc:    read characters into the specified buffer until the buffer is filled
  4614.       or a timeout occurs
  4615. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4616.     polls the Data Set Ready modem status and Data Ready line status bits
  4617.       to determine when characters are available
  4618. SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
  4619. --------S-146F04-----------------------------
  4620. INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
  4621.     AX = 6F04h
  4622.     BL = lowest termination character
  4623.     BH = highest termination character
  4624.     CX = size of buffer
  4625.     DX = port number (0-3)
  4626.     ES:DI -> buffer for received characters
  4627. Return: AH = line status (see #0208)
  4628.     ---on error (AH bit 7 set)---
  4629.        AL = 00h
  4630.        ES:DI -> next byte to be transferred
  4631.     ---if successful---
  4632.        AL = last byte read
  4633.        ES:DI unchanged
  4634.     CX = number of bytes read
  4635. Desc:    read characters into the specified buffer until the buffer is filled,
  4636.       a character in the specified range is received, or a timeout occurs
  4637. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4638.     polls the Data Set Ready modem status and Data Ready line status bits
  4639.       to determine when characters are available
  4640. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
  4641. --------S-147E-------------------------------
  4642. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  4643.     AH = 7Eh
  4644.     AL = code assigned to external application (80h-BFh)
  4645.         80h reserved for communications FOSSIL
  4646.         81h video FOSSIL
  4647.         82h reserved for keyboard FOSSIL
  4648.         83h reserved for system FOSSIL
  4649.     ES:DX -> entry point
  4650. Return: AX = 1954h
  4651.     BL = code assigned to application (same as input AL)
  4652.     DH = 00h failed
  4653.          01h successful
  4654. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  4655. --------S-147F-------------------------------
  4656. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  4657.     AH = 7Fh
  4658.     AL = code assigned to external application
  4659.     ES:DX -> entry point
  4660. Return: AX = 1954h
  4661.     BL = code assigned to application (same as input AL)
  4662.     DH = 00h failed
  4663.          01h successful
  4664. SeeAlso: AH=7Eh
  4665. --------S-1480-------------------------------
  4666. INT 14 - COMMUNICATIONS FOSSIL
  4667.     AH = 80h
  4668. SeeAlso: AH=7Eh
  4669. --------S-1480-------------------------------
  4670. INT 14 - COURIERS.COM - INSTALLATION CHECK
  4671.     AH = 80h
  4672. Return: AH = E8h if loaded
  4673. Program: COURIERS is a TSR utility by PC Magazine
  4674. --------S-148000-----------------------------
  4675. INT 14 - ARTICOM - INSTALLATION CHECK
  4676.     AX = 8000h
  4677. Return: AL = FFh if installed
  4678.         BH = major version
  4679.         BL = minor version
  4680. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  4681.       works on top of NetBIOS and allows modem/serial-port sharing by
  4682.       programs using INT 14 for serial I/O.
  4683. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  4684.       drivers
  4685. SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL"
  4686. SeeAlso: AX=8001h,AX=8002h
  4687. --------S-148000-----------------------------
  4688. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  4689.     AX = 8000h
  4690.     DX = port number
  4691. Return: AX = code for last error (see #0261)
  4692.     BX = number of characters in output buffer
  4693.     CX = nubmer of characters in input buffer
  4694.     DX = state flag (see #0262)
  4695. Program: COMM-DRV is a universal serial communications driver by Willies'
  4696.       Computer Software Company, which supports standard INT 14 and
  4697.       FOSSIL calls as well as its own interfaces
  4698. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  4699.  
  4700. (Table 0261)
  4701. Values for COMM-DRV error code:
  4702.  00h    no error
  4703.  01h    buffer not set or attempted to change buffer for active port
  4704.  02h    port not active
  4705.  03h    transmit buffer full
  4706.  04h    receive buffer full
  4707.  05h    syntax error
  4708.  06h    invalid buffer size
  4709.  07h    invalid port
  4710.  08h    handler changed
  4711.  09h    invalid baud rate
  4712.  0Ah    invalid parity setting
  4713.  0Bh    invalid data length
  4714.  0Ch    invalid number of stop bits
  4715.  0Dh    invalid protocol number
  4716.  0Eh    IRQ changed
  4717.  0Fh    port changged
  4718.  10h    invalid threshold setting
  4719.  11h    invalid IRQ number
  4720.  12h    interrupts not enabled
  4721.  13h    invalid break syntax
  4722.  14h    fatal error
  4723.  15h    CTS error
  4724.  16h    invalid RS232 I/O port address
  4725.  17h    environment variable not set
  4726.  18h    error on IOCTL call
  4727.  19h    error during atexit cleanup
  4728.  1Ah    error mapping for direct calls
  4729.  1Bh    error opening device
  4730.  1Ch    unable to allocate memory
  4731.  1Dh    error on external micro card
  4732.  1Eh    card changed error
  4733.  1Fh    card type error
  4734.  20h    not supported
  4735.  21h    parent port error
  4736.  22h    card command buffer full
  4737.  23h    no subdevice for this port
  4738.  24h    unknown error
  4739.  25h    external card busy
  4740.  26h    no more timers available
  4741.  27h    INT 14 vector changed
  4742.  28h    INT 08 vector changed
  4743.  29h    DPMI error
  4744.  2Ah    TSR buffer too small (or nonexistent)
  4745.  2Bh    out of asynchronous resources
  4746.  2Ch    out of timer resources
  4747.  2Dh    out of "other" timer resources
  4748.  2Eh    file I/O error
  4749.  2Fh    hardware memory > 64K
  4750.  
  4751. Bitfields for state flag :
  4752. Bit(s)    Description    (Table 0262)
  4753.  0    port is active
  4754.  1    output throttled (XOFF received, or DSR or CTS reset)
  4755.  2    input throttled (XOFF sent, or DTR or RTS reset)
  4756. --------S-148001-----------------------------
  4757. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  4758.     AX = 8001h
  4759. Return: AX = error code, if error (see #0264)
  4760. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  4761. Index:    uninstall;ARTICOM
  4762. --------S-148001-----------------------------
  4763. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  4764.     AX = 8001h
  4765.     DX = port number
  4766. Return: BX:DI -> Port Control Block (see #0271)
  4767. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  4768. --------S-148002-----------------------------
  4769. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  4770.     AX = 8002h
  4771.     ES:DI -> buffer for redirector status structure (see #0263)
  4772. Return: AX = error code, if error (see #0264)
  4773. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  4774.  
  4775. Format of ARTICOM redirector status:
  4776. Offset    Size    Description    (Table 0263)
  4777.  00h    WORD    redirector major and minor version numbers
  4778.  02h    WORD    redirectable ports found
  4779.  04h    WORD    redirectable ports + local ports found
  4780.  06h    WORD    redirector internal buffer size
  4781.  08h    WORD    maximum servers maintained
  4782.  0Ah    WORD    number of adapters found
  4783. --------S-148002-----------------------------
  4784. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  4785.     AX = 8002h
  4786.     DX = port number
  4787. Return: AH bit 7 set on error
  4788.     AH bit 7 clear if successful
  4789.         BX:DI -> Port Control Block (see #0271) (modifyable portion only)
  4790. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  4791. --------S-148003-----------------------------
  4792. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  4793.     AX = 8003h
  4794.     CX = error number to translate (see #0264)
  4795. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  4796. SeeAlso: AX=8000h
  4797.  
  4798. (Table 0264)
  4799. Values for ARTICOM error codes:
  4800.  00h    "No error"
  4801.  01h    "An invalid port number was specified"
  4802.  02h    "Port is already redirected"
  4803.  03h    "Too many ports redirected"
  4804.  04h    "Cannot locate the server"
  4805.  05h    "Server is busy"
  4806.  06h    "Access denied"
  4807.  07h    "Resource in use"
  4808.  08h    "Resource in use - request queued"
  4809.  09h    "No such resource"
  4810.  0Ah    "Invalid username/password pair"
  4811.  0Bh    "Noncompatible version number"
  4812.  0Ch    "Can't remove from memory"
  4813.  0Dh    "Bad NETBIOS adapter number"
  4814.  0Eh    "No more entries in list"
  4815.  0Fh    "Resource is not available at this time"
  4816.  10h    "Invalid value to INT 14 call"
  4817. --------S-148003-----------------------------
  4818. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  4819.     AX = 8003h
  4820.     DX = port number
  4821. Return: AX = number of characters in input buffer
  4822.     BX = input buffer size
  4823.     CX = number of characters in output buffer
  4824.     DX = output buffer size
  4825. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  4826. --------S-148004-----------------------------
  4827. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  4828.     AX = 8004h
  4829.     DX = port to redirect (COM1=0, COM2=1, ...)
  4830.     CH = attach type
  4831.     CL = adapter to use for attach, 0FFh to search all
  4832.     ES:DI -> attachment structure (see #0265)
  4833. Return: AX = error code, if error (see #0264)
  4834. Note:    The wildcard '*' is supported in the server and resource fields.  If
  4835.       wild cards are used then the first matching available server is
  4836.       attached.
  4837. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  4838.  
  4839. Format of ARTICOM attachment structure:
  4840. Offset    Size    Description    (Table 0265)
  4841.  00h 16 BYTEs    server to look for attach
  4842.  10h 16 BYTEs    attach to resource name
  4843.  20h 16 BYTEs    username for attach
  4844.  30h 16 BYTEs    password for username or resource
  4845.  40h    BYTE    attach type
  4846.         00h normal
  4847.         01h queue if resource is in use (not yet supported in v1.00)
  4848. --------S-148005-----------------------------
  4849. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  4850.     AX = 8005h
  4851.     DX = port to detach (COM1=0, COM2=1, ...)
  4852. Return: AX = error code, if error (see #0264)
  4853. Note:    only a previously attached resource can be detached
  4854. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  4855. --------S-148006-----------------------------
  4856. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  4857.     AX = 8006h
  4858.     BX = remote port (COM1=0, COM2=1, ...)
  4859.     CL = adapter number, FFh to try all adapters
  4860.     ES:DI -> resource information structure (see #0266)
  4861.     DS:SI -> 16 byte server name. See note.
  4862. Return: AX = error code, if error (see #0264)
  4863.     BX = next remote port, recall to get next resource info
  4864. Note:    Wild cards supported in both the resource field and server name
  4865.       string DS:SI. If wild cards used then first matching available
  4866.       resource information is searched. Set the resource field to FFh to
  4867.       return all resources.
  4868. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  4869.  
  4870. Format of ARTICOM resource information structure:
  4871. Offset    Size    Description    (Table 0266)
  4872.  00h    BYTE    00h = free, else used
  4873.  01h 16 BYTEs    resource name
  4874.  11h 16 BYTEs    username of resource user
  4875.  21h    WORD    amount of time used
  4876.  23h    WORD    amount of time remaining
  4877.  53h 48 BYTEs    description of resource
  4878.  93h 64 BYTEs    initialization string for modem
  4879.  B3h 32 BYTEs    dial string for modem
  4880.  D3h 32 BYTEs    hang-up string for modem
  4881. --------S-148007-----------------------------
  4882. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  4883.     AX = 8007h
  4884.     DX = port index (COM1=0, COM2=1, ...)
  4885.     ES:DI -> buffer for port information structure (see #0267)
  4886. Return: CF clear if redirection info returned and port is redirected
  4887.     CF set if not a redirected port
  4888.     AX = error code, if error (see #0264)
  4889. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  4890.  
  4891. Format of ARTICOM port information structure:
  4892. Offset    Size    Description    (Table 0267)
  4893.  00h 16 BYTEs    server name resource is on
  4894.  10h    BYTE    adapter number server is on
  4895.  11h 16 BYTEs    resource name
  4896.  21h    WORD    remote port index, use to get additional information
  4897.  23h    WORD    buffer size
  4898.  25h    WORD    baud rate (see #0268)
  4899.  26h    BYTE    modem status register
  4900.  27h    BYTE    modem control register
  4901.  28h    BYTE    line status register
  4902.  29h    BYTE    line control register
  4903.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  4904.  2Bh    WORD    send timeout in ticks
  4905.  2Dh    WORD    receive timeout in ticks
  4906.  2Fh    WORD    time used on remote port
  4907.  31h    WORD    time left before timeout
  4908.  33h    BYTE    if server changes allowed?
  4909.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  4910.  
  4911. (Table 0268)
  4912. Values for ARTICOM baud rate:
  4913.  00h    110
  4914.  01h    150
  4915.  02h    300
  4916.  03h    600
  4917.  04h    1200
  4918.  05h    2400
  4919.  06h    4800
  4920.  07h    9600
  4921.  08h    19200
  4922.  09h    38400
  4923.  0Ah    57600
  4924.  0Bh    115200
  4925.  0Ch    134.5
  4926.  0Dh    1800
  4927.  0Eh    2000
  4928.  0Fh    3600
  4929.  10h    7200
  4930. SeeAlso: #0213
  4931. --------S-148008-----------------------------
  4932. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  4933.     AX = 8008h
  4934.     BX = server index (0,1,...)
  4935.     ES:DI -> server name structure (see #0269)
  4936. Return: AX = error code, if error (see #0264)
  4937.     BX = next remote port, repeat call to get next available server
  4938. Note:    the wildcard '*' is supported in the server name field.     Set the
  4939.       server name to FFh to search for all servers.
  4940. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  4941.  
  4942. Format of ARTICOM server name structure:
  4943. Offset     Size      Description    (Table 0269)
  4944.   00h 16 BYTEs      (call) ASCIZ server name
  4945.   10h     BYTE      (ret) the adapter server is found
  4946. --------S-148009-----------------------------
  4947. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  4948.     AX = 8009h
  4949.     BX = send timeout in ticks
  4950.     CX = receive timeout in ticks
  4951.     DX = port index (COM1=0, COM2=1, ...)
  4952. Return: nothing
  4953. SeeAlso: AX=8000h,AX=800Ah
  4954. --------S-14800A-----------------------------
  4955. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  4956.     AX = 800Ah
  4957.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  4958.     DX = port index (COM1=0, COM2=1, ...)
  4959. Return: AX = error code, if error (see #0264)
  4960. Note:    for attached ports only!
  4961. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  4962. --------S-148025-----------------------------
  4963. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  4964.     AX = 8025h
  4965.     DS:DX -> address of trap function (see #0270) to call on read/write
  4966. Return: nothing
  4967. Note:    setting the vector to a user function allows the redirector's activity
  4968.       to be monitored.
  4969. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  4970.  
  4971. (Table 0270)
  4972. Values ARTICOM trap function is called with:
  4973.     AH = operation
  4974.         80h reading character
  4975.         81h writing character
  4976.     AL = character
  4977. Return: AX must be preserved
  4978.     far JUMP to old trap function (see AX=8035h)
  4979. --------S-148035-----------------------------
  4980. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  4981.     AX = 8035h
  4982. Return: ES:BX -> address of current send/receive routine
  4983. Note:    this function returns the address of the routine which is called
  4984.       inside A-REDIR.EXE each time a character is received or sent on the
  4985.       active COM port.
  4986. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  4987. --------S-1481-------------------------------
  4988. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  4989.     AH = 81h
  4990.     AL = port number (1-4)
  4991. Return: AH = 00h port available
  4992.          01h port exists but already in use
  4993.          02h port nonexistent
  4994. Program: COURIERS is a TSR utility by PC Magazine
  4995. SeeAlso: AH=83h,AH=8Dh
  4996. --------S-1481-------------------------------
  4997. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  4998.     AH = 81h
  4999.     BX:DI -> port control block (see #0271)
  5000.     DX = port number
  5001. Return: AH = line status register (see #0208)
  5002.         error if bit 7 set
  5003.     AL = modem status register (see #0209)
  5004. Program: COMM-DRV is a universal serial communications driver by Willies'
  5005.       Computer Software Company, which supports standard INT 14 and
  5006.       FOSSIL calls as well as its own interfaces
  5007. Note:    AX=8001h should be called first to fill in the port control block
  5008. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  5009.  
  5010. Format of COMM-DRV port control block:
  5011. Offset    Type    Description    (Table 0271)
  5012.  00h    WORD    port IO address
  5013.  02h    WORD    port IRQ
  5014.  04h    WORD    baud rate
  5015.  06h    WORD    parity
  5016.  08h    WORD    data bits
  5017.  0Ah    WORD    stop bits
  5018.  0Ch    WORD    break status (0000h off)
  5019.  0Eh    WORD    flow control protocol
  5020.  10h    BYTE    input block
  5021.  11h    BYTE    output block
  5022.  12h    WORD    low threshold
  5023.  14h    WORD    high threshold
  5024.  16h    WORD    segment of buffer
  5025.  18h    WORD    offset of buffer
  5026.  1Ah    WORD    input buffer length
  5027.  1Ch    WORD    output buffer length
  5028.  1Eh    BYTE    auxiliary address
  5029.  1Fh    BYTE    spare
  5030.  20h  4 WORDs    spares
  5031. --------V-148100-----------------------------
  5032. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  5033.     AX = 8100h
  5034.     ES:DI -> buffer for VFOSSIL information (see #0272)
  5035. Return: AX = 1954h if installed
  5036. SeeAlso: AH=7Eh,AX=8101h
  5037.  
  5038. Format of VFOSSIL information:
  5039. Offset    Size    Description    (Table 0272)
  5040.  00h    WORD    size of information in bytes, including this field
  5041.  02h    WORD    VFOSSIL major version
  5042.  04h    WORD    VFOSSIL revision level
  5043.  06h    WORD    highest VFOSSIL application function supported
  5044. --------V-148101-----------------------------
  5045. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  5046.     AX = 8101h
  5047.     ES:DI -> buffer for application function table (see #0273)
  5048.     CX = length of buffer in bytes
  5049. Return: AX = 1954h if installed
  5050.         BH = highest VFOSSIL application function supported
  5051. Note:    the number of initialized pointers in the application function table
  5052.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  5053.       will be initialized
  5054. SeeAlso: AX=8102h
  5055.  
  5056. Format of VFOSSIL application function table:
  5057. Offset    Size    Description    (Table 0273)
  5058.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0278)
  5059.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0279)
  5060.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0280)
  5061.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0281)
  5062.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0282)
  5063.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0283)
  5064.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  5065.           (see #0284)
  5066.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0285)
  5067.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0286)
  5068.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0287)
  5069.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0288)
  5070.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0289)
  5071.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  5072.           (see #0290)
  5073.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  5074.           (see #0291)
  5075.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  5076.           (see #0292)
  5077.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  5078.           (see #0293)
  5079.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  5080.           (see #0294)
  5081.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  5082.           (see #0295)
  5083.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  5084.           (see #0296)
  5085.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  5086.           (see #0297)
  5087.  
  5088. Format of VFOSSIL video mode data structure:
  5089. Offset    Size    Description    (Table 0274)
  5090.  00h    WORD    length of structure including this field
  5091.  02h    BYTE    mode characteristics
  5092.         bit 0: clear if MDA, set otherwise
  5093.         bit 1: graphics mode
  5094.         bit 2: color disabled (black-and-white)
  5095.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  5096.  04h    WORD    number of text columns
  5097.  06h    WORD    number of text rows
  5098.  08h    WORD    reserved
  5099.  0Ah    WORD    reserved
  5100.  0Ch    DWORD    reserved
  5101. SeeAlso: #0278,#0279
  5102.  
  5103. Format of VFOSSIL video configuration data:
  5104. Offset    Size    Description    (Table 0275)
  5105.  00h    WORD    structure length including this field
  5106.  02h    WORD    adapter type
  5107.         00h monochrome/printer
  5108.         01h CGA
  5109.         02h EGA
  5110.         03h VGA
  5111.         07h 8514/A
  5112.  04h    WORD    display type
  5113.         00h monochrome
  5114.         01h color
  5115.         02h enhanced color
  5116.         09h 8514
  5117.  06h    DWORD    adapter memory size
  5118. SeeAlso: #0280
  5119.  
  5120. Format of VFOSSIL cursor type record:
  5121. Offset    Size    Description    (Table 0276)
  5122.  00h    WORD    cursor start line
  5123.  02h    WORD    cursor end line
  5124.  04h    WORD    cursor width (always 01h)
  5125.  06h    WORD    cursor attribute (FFFFh = hidden)
  5126.  
  5127. (Table 0277)
  5128. Values for VFOSSIL error code:
  5129.  0000h    successful
  5130.  0074h    internal VIO failure
  5131.  0163h    unsupported mode
  5132.  0166h    invalid row value
  5133.  0167h    invalid column value
  5134.  017Eh    buffer too small
  5135.  01A5h    invalid VIO parameter
  5136.  01B4h    invalid VIO handle
  5137.  
  5138. (Table 0278)
  5139. Call VioGetMode with:
  5140.     STACK:    WORD    VIO handle (must be 00h)
  5141.         DWORD    pointer to video mode data structure (see #0274)
  5142. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0277)
  5143. SeeAlso: #0279
  5144.  
  5145. (Table 0279)
  5146. Call VioSetMode with:
  5147.     STACK:    WORD    VIO handle (must be 00h)
  5148.         DWORD    pointer to video mode data structure (see #0274)
  5149. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0277)
  5150. SeeAlso: #0278
  5151.  
  5152. (Table 0280)
  5153. Call VioGetConfig with:
  5154.     STACK:    WORD    VIO handle (must be 00h)
  5155.         DWORD    pointer to video configuration data buffer (see #0275)
  5156. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0277)
  5157.  
  5158. (Table 0281)
  5159. Call VioWrtTTY with:
  5160.     STACK:    WORD    VIO handle (must be 00h)
  5161.         WORD    length of string
  5162.         DWORD    pointer to character string to be written to screen
  5163. Return: AX = error code (00h, 74h, 1B4h) (see #0277)
  5164. Notes:    write wraps at end of line and terminates if it reaches end of screen
  5165.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  5166.       not required to be reentrant; in non-ANSI mode, the function is
  5167.       reentrant and may be called from within an MS-DOS function call
  5168.  
  5169. (Table 0282)
  5170. Call VioGetANSI with:
  5171.     STACK:    WORD    VIO handle (must be 00h)
  5172.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  5173.             or 01h if ANSI is on
  5174. Return: AX = error code (00h, 74h, 1B4h) (see #0277)
  5175. SeeAlso: #0283
  5176.  
  5177. (Table 0283)
  5178. Call VioSetANSI with:
  5179.     STACK:    WORD    VIO handle (must be 00h)
  5180.         DWORD    pointer to WORD indicating new state of ANSI
  5181.             00h off, 01h on
  5182. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0277)
  5183. SeeAlso: #0282
  5184.  
  5185. (Table 0284)
  5186. Call VioGetCurPos with:
  5187.     STACK:    WORD    VIO handle (must be 00h)
  5188.         DWORD    pointer to WORD to hold current cursor column (0-based)
  5189.         DWORD    pointer to WORD to hold current cursor row (0-based)
  5190. Return: AX = error code (00h, 74h, 1B4h) (see #0277)
  5191. SeeAlso: #0285
  5192.  
  5193. (Table 0285)
  5194. Call VioSetCurPos with:
  5195.     STACK:    WORD    VIO handle (must be 00h)
  5196.         WORD    cursor column
  5197.         WORD    cursor row
  5198. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5199. Note:    if either coordinate is invalid, the cursor is not moved
  5200. SeeAlso: #0284
  5201.  
  5202. (Table 0286)
  5203. Call VioGetCurType with:
  5204.     STACK:    WORD    VIO handle (must be 00h)
  5205.         DWORD    pointer to cursor type record (see #0276)
  5206. Return: AX = error code (00h, 74h, 1B4h) (see #0277)
  5207. SeeAlso: #0287
  5208.  
  5209. (Table 0287)
  5210. Call VioSetCurType with:
  5211.     STACK:    WORD    VIO handle (must be 00h)
  5212.         DWORD    pointer to cursor type record (see #0276)
  5213. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0277)
  5214. SeeAlso: #0288
  5215.  
  5216. (Table 0288)
  5217. Call VioScrollUp with:
  5218.     STACK:    WORD    VIO handle (must be 00h)
  5219.         DWORD    pointer to char/attr cell for filling emptied rows
  5220.         WORD    number or rows to scroll (FFFFh = clear area)
  5221.         WORD    right column of scroll area
  5222.         WORD    bottom row of scroll area
  5223.         WORD    left column of scroll area
  5224.         WORD    top row of scroll area
  5225. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5226. SeeAlso: #0289,INT 10/AH=06h
  5227.  
  5228. (Table 0289)
  5229. Call VioScrollDn with:
  5230.     STACK:    WORD    VIO handle (must be 00h)
  5231.         DWORD    pointer to char/attr cell for filling emptied rows
  5232.         WORD    number or rows to scroll (FFFFh = clear area)
  5233.         WORD    right column of scroll area
  5234.         WORD    bottom row of scroll area
  5235.         WORD    left column of scroll area
  5236.         WORD    top row of scroll area
  5237. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5238. SeeAlso: #0288,INT 10/AH=07h
  5239.  
  5240. (Table 0290)
  5241. Call VioReadCellStr with:
  5242.     STACK:    WORD    VIO handle (must be 00h)
  5243.         WORD    column at which to start reading
  5244.         WORD    row at which to start reading
  5245.         DWORD    pointer to WORD containing length of buffer in bytes
  5246.             on return, WORD contains number of bytes actually read
  5247.         DWORD    pointer to buffer for cell string
  5248. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0277)
  5249.  
  5250. (Table 0291)
  5251. Call VioReadCharStr with:
  5252.     STACK:    WORD    VIO handle (must be 00h)
  5253.         WORD    column at which to start reading
  5254.         WORD    row at which to start reading
  5255.         DWORD    pointer to WORD containing length of buffer in bytes
  5256.             on return, WORD contains number of bytes actually read
  5257.         DWORD    pointer to buffer for character string
  5258. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0277)
  5259.  
  5260. (Table 0292)
  5261. Call VioWrtCellStr with:
  5262.     STACK:    WORD    VIO handle (must be 00h)
  5263.         WORD    column at which to start writing
  5264.         WORD    row at which to start writing
  5265.         WORD    length of cell string in bytes
  5266.         DWORD    pointer to cell string to write
  5267. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5268. Note:    write wraps at end of line and terminates if it reaches end of screen
  5269.  
  5270. (Table 0293)
  5271. Call VioWrtCharStr with:
  5272.     STACK:    WORD    VIO handle (must be 00h)
  5273.         WORD    column at which to start writing
  5274.         WORD    row at which to start writing
  5275.         WORD    length of character string
  5276.         DWORD    pointer to character string to write
  5277. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5278. Note:    write wraps at end of line and terminates if it reaches end of screen
  5279.  
  5280. (Table 0294)
  5281. Call VioWrtCharStrAttr with:
  5282.     STACK:    WORD    VIO handle (must be 00h)
  5283.         DWORD    pointer to attribute to be applied to each character
  5284.         WORD    column at which to start writing
  5285.         WORD    row at which to start writing
  5286.         WORD    length of character string
  5287.         DWORD    pointer to character string to write
  5288. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5289. Note:    write wraps at end of line and terminates if it reaches end of screen
  5290.  
  5291. (Table 0295)
  5292. Call VioWrtNAttr with:
  5293.     STACK:    WORD    VIO handle (must be 00h)
  5294.         WORD    column at which to start writing
  5295.         WORD    row at which to start writing
  5296.         WORD    number of times to write attribute
  5297.         DWORD    pointer to display attribute to replicate
  5298. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5299. Note:    write wraps at end of line and terminates if it reaches end of screen
  5300.  
  5301. (Table 0296)
  5302. Call VioWrtNCell with:
  5303.     STACK:    WORD    VIO handle (must be 00h)
  5304.         WORD    column at which to start writing
  5305.         WORD    row at which to start writing
  5306.         WORD    number of times to write cell
  5307.         DWORD    pointer to cell to replicate
  5308. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5309. Note:    write wraps at end of line and terminates if it reaches end of screen
  5310.  
  5311. (Table 0297)
  5312. Call VioWrtNChar with:
  5313.     STACK:    WORD    VIO handle (must be 00h)
  5314.         WORD    column at which to start writing
  5315.         WORD    row at which to start writing
  5316.         WORD    number of times to write character
  5317.         DWORD    pointer to character to replicate
  5318. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5319. Note:    write wraps at end of line and terminates if it reaches end of screen
  5320. --------V-148102-----------------------------
  5321. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  5322.     AX = 8102h
  5323. Return: AX = 1954h
  5324. Note:    terminates all operations; after this call, the video FOSSIL may either
  5325.       be removed from memory or reinitialized
  5326. SeeAlso: AX=8101h,AX=8103h
  5327. --------V-148103-----------------------------
  5328. INT 14 - VIDEO FOSSIL - UNINSTALL
  5329.     AX = 8103h
  5330. Return: AX = 1954h
  5331. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  5332. --------K-1482-------------------------------
  5333. INT 14 - KEYBOARD FOSSIL
  5334.     AH = 82h
  5335. SeeAlso: AH=7Eh
  5336. --------S-1482-------------------------------
  5337. INT 14 - COURIERS.COM - CONFIGURE PORT
  5338.     AH = 82h
  5339.     AL = port number (1-4)
  5340.     BX = speed (bps)
  5341.     CX = bit flags
  5342.         bit 0: enable input flow control
  5343.         bit 1: enable output flow control
  5344.         bit 2: use X.PC protocol (not yet implemented)
  5345. Return: nothing
  5346. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  5347. --------S-1482-------------------------------
  5348. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  5349.     AH = 82h
  5350.     DX = port number
  5351. Return: AH bit 7 set on error
  5352.     AH bit 7 clear if successful
  5353. Desc:    reset the port to its state before the AH=81h initialization and unhook
  5354.       any interrupts used by the port
  5355. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  5356. ----------1483-------------------------------
  5357. INT 14 - SYSTEM FOSSIL
  5358.     AH = 83h
  5359. SeeAlso: AH=7Eh
  5360. --------S-1483-------------------------------
  5361. INT 14 - COURIERS.COM - START INPUT
  5362.     AH = 83h
  5363.     ES:BX -> circular input buffer
  5364.     CX = length of buffer
  5365.         (should be at least 128 bytes if input flow control enabled)
  5366. Return: nothing
  5367. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  5368. --------S-1483-------------------------------
  5369. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  5370.     AH = 83h
  5371.     DX = port number
  5372.     AL = subfunction
  5373.         00h flush input buffer
  5374.         01h flush output buffer
  5375.         02h flush both buffers
  5376. Return: AH bit 7 set on error
  5377.     AH bit 7 clear if successful
  5378. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  5379. --------S-1484-------------------------------
  5380. INT 14 - COURIERS.COM - READ CHARACTER
  5381.     AH = 84h
  5382. Return: ZF set if no characters available
  5383.     ZF clear
  5384.        AL = character
  5385.        AH = modem status bits
  5386.         bit 7: set on input buffer overflow
  5387. SeeAlso: AH=02h,AH=86h,AH=89h
  5388. --------S-1484-------------------------------
  5389. INT 14 - COMM-DRV v14.0 - SEND PACKET
  5390.     AH = 84h
  5391.     CX = packet length in bytes
  5392.     DX = port number
  5393.     ES:DI -> packet to be sent
  5394. Return: AH = line status (see #0208)
  5395.         bit 7 set on error
  5396.     AL destroyed
  5397. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  5398. --------S-1485-------------------------------
  5399. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  5400.     AH = 85h
  5401. Return: nothing
  5402. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  5403. --------S-1485-------------------------------
  5404. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  5405.     AH = 85h
  5406.     CX = length of packet in bytes
  5407.     DX = port number
  5408.     ES:DI -> buffer for packet
  5409. Return: AH = line status (see #0208)
  5410.         bit 7 set on error
  5411.     AL destroyed
  5412. Note:    this call requires that at least the requested number of bytes are
  5413.       already present in the input buffer, and will fail if there are
  5414.       fewer bytes available
  5415. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  5416. --------S-1486-------------------------------
  5417. INT 14 - COURIERS.COM - START OUTPUT
  5418.     AH = 86h
  5419.     ES:BX -> output buffer
  5420.     CX = length of output buffer
  5421. Return: nothing
  5422. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  5423. --------S-1486-------------------------------
  5424. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  5425.     AH = 86h
  5426.     BL = maximum clock ticks to wait before signalling error on input func
  5427.     BH = maximum clock ticks to wait before signalling error on output
  5428.     DX = port number
  5429.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  5430.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  5431. Return: AH bit 7 set on error
  5432.     AH bit 7 clear if successful
  5433. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  5434.       returning an error when no data is available; functions 01h and 84h
  5435.       will wait for the output timeout before returning an error if there
  5436.       is no space to output the data
  5437. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  5438. --------S-1487-------------------------------
  5439. INT 14 - COURIERS.COM - OUTPUT STATUS
  5440.     AH = 87h
  5441. Return: AX = number of unsent characters
  5442. SeeAlso: AH=88h"COURIERS"
  5443. --------S-1487-------------------------------
  5444. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  5445.     AH = 87h
  5446.     DX = port number
  5447. Return: AH bit 7 set on error
  5448.     AH bit 7 clear if successful
  5449. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  5450. --------S-1488-------------------------------
  5451. INT 14 - COURIERS.COM - ABORT OUTPUT
  5452.     AH = 88h
  5453. SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS"
  5454. --------S-1488-------------------------------
  5455. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  5456.     AH = 88h
  5457.     DX = port number
  5458. Return: AH bit 7 set on error
  5459.     AH bit 7 clear if successful
  5460. Program: COMM-DRV is a universal serial communications driver by Willies'
  5461.       Computer Software Company, which supports standard INT 14 and
  5462.       FOSSIL calls as well as its own interfaces
  5463. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  5464. --------S-1489-------------------------------
  5465. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  5466.     AH = 89h
  5467.     CL = character to send
  5468. Return: nothing
  5469. SeeAlso: AH=01h,AH=84h"COURIERS"
  5470. --------S-1489-------------------------------
  5471. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  5472.     AH = 89h
  5473.     DX = port number
  5474. Return: AH bit 7 set on error
  5475.     AH bit 7 clear if successful
  5476. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  5477. --------S-148A-------------------------------
  5478. INT 14 - COURIERS.COM - SEND BREAK
  5479.     AH = 8Ah
  5480. Return: nothing
  5481. SeeAlso: AH=89h"COURIERS",AH=FAh
  5482. --------S-148A-------------------------------
  5483. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  5484.     AH = 8Ah
  5485.     DX = port number
  5486. Return: AH bit 7 set on error
  5487.     AH bit 7 clear if successful
  5488. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  5489. --------S-148B-------------------------------
  5490. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  5491.     AH = 8Bh
  5492.     CX = bitmask of interrupt to process
  5493.         00h = deinstall
  5494.     BX:DI -> DWORD containing address of function to be called
  5495. Return: AH bit 7 clear if successful
  5496.     AH bit 7 set on error
  5497. --------S-148C-------------------------------
  5498. INT 14 - COURIERS.COM - SET SPEED
  5499.     AH = 8Ch
  5500.     BX = speed in bps
  5501. Return: nothing
  5502. SeeAlso: AH=00h,AH=82h"COURIERS"
  5503. --------S-148C-------------------------------
  5504. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  5505.     AH = 8Ch
  5506.     AL = register offset
  5507.     DX = port number
  5508. Return: AH bit 7 set on error
  5509.     AH bit 7 clear if successful
  5510.         AL = contents of UART register
  5511. SeeAlso: AH=8Dh"COMM-DRV"
  5512. --------S-148D-------------------------------
  5513. INT 14 - COURIERS.COM - DECONFIGURE PORT
  5514.     AH = 8Dh
  5515. Return: nothing
  5516. SeeAlso: AH=82h"COURIERS"
  5517. --------S-148D-------------------------------
  5518. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  5519.     AH = 8Dh
  5520.     AL = register offset
  5521.     BL = new value for UART register
  5522.     DX = port number
  5523. Return: AH bit 7 set on error
  5524.     AH bit 7 clear if successful
  5525. SeeAlso: AH=8Ch"COMM-DRV"
  5526. --------S-148E-------------------------------
  5527. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  5528.     AH = 8Eh
  5529.     CX = length of packet in bytes
  5530.     DX = port number
  5531.     ES:DI -> buffer for packet
  5532. Return: AH = line status (see #0208)
  5533.         bit 7 set on error (see AX=8000h"COMM-DRV")
  5534.     AL destroyed
  5535. Program: COMM-DRV is a universal serial communications driver by Willies'
  5536.       Computer Software Company, which supports standard INT 14 and
  5537.       FOSSIL calls as well as its own interfaces
  5538. Desc:    retrieve a packet from the input buffer without removing it from the
  5539.       buffer
  5540. Note:    this call requires that at least the requested number of bytes are
  5541.       already present in the input buffer, and will fail if there are
  5542.       fewer bytes available
  5543. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  5544. --------S-14A0-------------------------------
  5545. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  5546.     AH = A0h
  5547.     ES:BX -> ASCIZ internet host name
  5548.     CX = length of name
  5549. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0298)
  5550.     CL = session ID
  5551. Program: the Bridge Application Program Interface is a set of functions which
  5552.       makes many of the details of LAN communications transparent
  5553. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  5554. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  5555.  
  5556. (Table 0298)
  5557. Values for 3com BAPI return code:
  5558.  00h    successful
  5559.  01h    no characters written
  5560.  02h    no characters read
  5561.  03h    no such session
  5562.  04h    clearinghouse name not found
  5563.  05h    no response from host
  5564.  06h    no more sessions available
  5565.  07h    session aborted
  5566.  08h    invalid clearinghouse name
  5567.  09h    not supported
  5568.  0Ah    internal (general) network error
  5569.  0Bh    out of memory
  5570.  0Ch    invalid IP address
  5571. --------S-14A0--CXFFFF-----------------------
  5572. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  5573.     AH = A0h
  5574.     CX = FFFFh
  5575. Return: CF clear if successful
  5576.         AX = 5445h ('TE')
  5577.         CX <> FFFFh
  5578.         DX = port number
  5579.     CF set on error
  5580. Program: TES is a network serial port emulation program
  5581. SeeAlso: AH=A1h"TES"
  5582. --------S-14A1-------------------------------
  5583. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  5584.     AH = A1h
  5585.     DH = session ID (00h for external session managment)
  5586. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0298)
  5587.     AL destroyed (Novell TELAPI.EXE)
  5588. SeeAlso: AH=A0h"BAPI"
  5589. --------S-14A1-------------------------------
  5590. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  5591.     AH = A1h
  5592. Return: CX = number of active sessions
  5593.     ES:SI -> status array (see #0299)
  5594. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  5595.  
  5596. Format of Interconnections TES status array entry:
  5597. Offset    Size    Description    (Table 0299)
  5598.  00h    BYTE    status
  5599.  01h    WORD    offset of name
  5600. --------S-14A2-------------------------------
  5601. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  5602.     AH = A2h
  5603.     AL = character
  5604.     DH = session ID (00h for external session managment)
  5605. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0298)
  5606. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  5607. --------S-14A2-------------------------------
  5608. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  5609.     AH = A2h
  5610. Return: CX = number of servers
  5611.     ES:SI -> array of offsets from ES for server names
  5612. SeeAlso: AH=A1h"TES"
  5613. --------S-14A3-------------------------------
  5614. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  5615.     AH = A3h
  5616.     DH = session ID (00h for external session managment)
  5617. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0298)
  5618.     AL = character read or 00h if none available
  5619. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  5620. --------S-14A3-------------------------------
  5621. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  5622.     AH = A3h
  5623.     ES:SI -> ???
  5624. Return: CF clear if successful
  5625.         AX = 5445h ('TE')
  5626.         CX <> FFFFh
  5627.         DX = port number
  5628.     CF set on error
  5629. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  5630. --------S-14A4-------------------------------
  5631. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  5632.     AH = A4h
  5633.     CX = length of buffer in bytes
  5634.     DH = session ID (00h for external session managment)
  5635.     ES:BX -> buffer containing data
  5636. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0298)
  5637.     CX = number of bytes actually sent
  5638. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  5639. --------S-14A4-------------------------------
  5640. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  5641.     AH = A4h
  5642.     ???
  5643. Return: ???
  5644. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5645. --------S-14A5-------------------------------
  5646. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  5647.     AH = A5h
  5648.     CX = length of buffer
  5649.     DH = session ID (00h for external session managment)
  5650.     ES:BX -> buffer for data
  5651. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0298)
  5652.     CX = number of bytes actually read
  5653. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  5654. SeeAlso: AH=A7h"BAPI",AX=FF02h
  5655. --------S-14A5-------------------------------
  5656. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  5657.     AH = A5h
  5658.     AL = session number
  5659. Return: ???
  5660. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  5661. --------S-14A6-------------------------------
  5662. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  5663.     AH = A6h
  5664.     DH = session ID (00h for external session managment)
  5665. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0298)
  5666. Desc:    generate a short break signal; if data delivery was turned off by the
  5667.       break, wait for the host to turn it on again
  5668. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  5669. --------S-14A6-------------------------------
  5670. INT 14 - Interconnections Inc. TES - DROP A SESSION
  5671.     AH = A6h
  5672.     AL = session number
  5673. Return: AH = status
  5674.         00h successful
  5675.         else error
  5676. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5677. --------S-14A7-------------------------------
  5678. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  5679.     AH = A7h
  5680.     DH = session ID (00h for external session managment)
  5681. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0298)
  5682.     CX = number of bytes available for reading
  5683. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  5684. SeeAlso: AH=A5h"BAPI"
  5685. --------S-14A7-------------------------------
  5686. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  5687.     AH = A7h
  5688.     ???
  5689. Return: ???
  5690. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5691. --------S-14A8-------------------------------
  5692. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  5693.     AH = A8h
  5694.     AL = 00h no visible response
  5695.     ES:SI -> ASCIZ command
  5696. Return: ???
  5697. --------N-14A8-------------------------------
  5698. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  5699.     AH = A8h
  5700.     DH = session ID???
  5701.     CH = subfunction
  5702.         02h ???
  5703.         0Dh ???
  5704.         0Fh ???
  5705.         10h ???
  5706.         11h ???
  5707.         28h ???
  5708.         else
  5709.         Return: AH = 09h (not supported)
  5710. Return: AH = return code (see #0298)
  5711.         00h successful
  5712.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  5713.         CL = ??? (7Fh/FFh) (subfunction 28h)
  5714.         CX = ??? (subfunction 11h)
  5715. SeeAlso: AH=A9h"TelAPI"
  5716. --------N-14A9-------------------------------
  5717. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  5718.     AH = A9h
  5719.     DH = session ID???
  5720.     CH = subfunction
  5721.         02h ???
  5722.         0Dh ???
  5723.         0Fh ???
  5724.         10h ???
  5725.         11h ???
  5726.         28h ???
  5727.         else
  5728.         Return: AH = 09h (not supported)
  5729.     ???
  5730. Return: AH = return code (see #0298)
  5731.     ???
  5732. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  5733. --------V-14AA01-----------------------------
  5734. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  5735.     AX = AA01h
  5736. Return: AX = FFFFh if installed, unchanged
  5737.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  5738.     CX = resident segment (v3.1+)
  5739. Program: DimVGA is a public domain screen saver by Menno Pieters
  5740. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  5741. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  5742. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  5743. SeeAlso: INT 2F/AX=E300h
  5744. Index:    screen saver;DimVGA
  5745. --------V-14AA02-----------------------------
  5746. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  5747.     AX = AA02h
  5748.     BX = number of clock ticks
  5749. Return: AX = FFFFh
  5750. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  5751.       when more than 256 colors can be used DimVGA will blank the screen.
  5752. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  5753. Index:    screen saver;DimVGA
  5754. --------V-14AA03-----------------------------
  5755. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  5756.     AX = AA03h
  5757.     BX = percentage remaining visible (1-99)
  5758. Return: AX = FFFFh
  5759. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  5760. Index:    screen saver;DimVGA
  5761. --------V-14AA04-----------------------------
  5762. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  5763.     AX = AA04h
  5764. Return: AX = FFFFh
  5765.     BX = current time-out in clock ticks
  5766. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  5767. Index:    screen saver;DimVGA
  5768. --------V-14AA05-----------------------------
  5769. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  5770.     AX = AA05h
  5771. Return: AX = FFFFh
  5772.     BX = current dimming factor
  5773. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  5774. Index:    screen saver;DimVGA
  5775. --------V-14AA06-----------------------------
  5776. INT 14 - DimVGA v2.0+ - DISABLE
  5777.     AX = AA06h
  5778. Return: AX = FFFFh
  5779. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  5780. Index:    screen saver;DimVGA
  5781. --------V-14AA07-----------------------------
  5782. INT 14 - DimVGA v2.0+ - ENABLE
  5783.     AX = AA07h
  5784. Return: AX = FFFFh
  5785. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  5786. Index:    screen saver;DimVGA
  5787. --------V-14AA08-----------------------------
  5788. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  5789.     AX = AA08h
  5790. Return: AX = FFFFh
  5791. Note:    this function will dim the screen immediately, even if DimVGA is
  5792.       currently disabled
  5793. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  5794. Index:    screen saver;DimVGA
  5795. --------V-14AA09-----------------------------
  5796. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  5797.     AX = AA09h
  5798. Return: AX = FFFFh
  5799. Note:    this function will undim the screen immediately, even if DimVGA is
  5800.       currently disabled
  5801. SeeAlso: AX=AA01h,AX=AA08h
  5802. Index:    screen saver;DimVGA
  5803. --------V-14AA0A-----------------------------
  5804. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  5805.     AX = AA0Ah
  5806. Return: AX = FFFFh
  5807.     BX = current state (0000h disabled, 0001h enabled)
  5808. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  5809. Index:    screen saver;DimVGA
  5810. --------V-14AA0B-----------------------------
  5811. INT 14 - DimVGA v2.1+ - SET HOTKEY
  5812.     AX = AA0Bh
  5813.     BH = shift state (see #0300)
  5814.     BL = keyboard scancode
  5815. Return: AX = FFFFh
  5816. SeeAlso: AX=AA01h,AX=AA0Ch
  5817. Index:    screen saver;DimVGA
  5818.  
  5819. Bitfields for DimVGA hotkey shift state:
  5820. Bit(s)    Description    (Table 0300)
  5821.  7-4    unused
  5822.  3    Alt key pressed
  5823.  2    Ctrl key pressed
  5824.  1    Left shift key pressed
  5825.  0    Right shift key pressed
  5826. --------V-14AA0C-----------------------------
  5827. INT 14 - DimVGA v2.1+ - GET HOTKEY
  5828.     AX = AA0Ch
  5829. Return: AX = FFFFh
  5830.     BH = shift state (see #0300)
  5831.     BL = keyboard scancode
  5832. SeeAlso: AX=AA01h,AX=AA0Bh
  5833. Index:    screen saver;DimVGA
  5834. --------V-14AA0D-----------------------------
  5835. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  5836.     AX = AA0Dh
  5837.     BX = new mouse check status
  5838.         0000h mouse checking off
  5839.         0001h mouse checking on
  5840. Return: AX = FFFFh
  5841. Note:    before switching mouse checking on, a mouse driver should be
  5842.       found in memory. If no mouse driver is found, mouse checking
  5843.       should be switched off (resident DimVGA does not check by itself).
  5844. SeeAlso: AX=AA01h,AX=AA0Eh
  5845. Index:    screen saver;DimVGA
  5846. --------V-14AA0E-----------------------------
  5847. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  5848.     AX = AA0Eh
  5849. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  5850. SeeAlso: AX=AA01h,AX=AA0Dh
  5851. Index:    screen saver;DimVGA
  5852. --------V-14AA0F-----------------------------
  5853. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  5854.     AX = AA0Fh
  5855.     BX = locking status
  5856.         0000h disabled
  5857.         0001h enabled
  5858. Return: AX = FFFFh
  5859. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  5860. Index:    screen saver;DimVGA
  5861. --------V-14AA10-----------------------------
  5862. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  5863.     AX = AA10h
  5864. Return: BX = locking status (0000h disabled, 0001h enabled)
  5865. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  5866. Index:    screen saver;DimVGA
  5867. --------S-14AF00BXAAAA-----------------------
  5868. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  5869.     AX = AF00h
  5870.     BX = AAAAh
  5871. Return: AX = AF01h if installed
  5872.         BH = protocol type (if BX=AAAAh on entry)
  5873.         01h NetManage TCP/IP
  5874.         BL = version for protocol type (if BX=AAAAh on entry)
  5875. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  5876.       behavior is used to determine whether the newer functions (AH=B0h,
  5877.       AH=B1h,etc) are available
  5878. SeeAlso: AH=A0h"BAPI"
  5879. --------S-14B0-------------------------------
  5880. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  5881.     AH = B0h
  5882.     AL = new state (00h disabled, 01h enabled)
  5883. Return: AH = return code (00h,07h,0Ah) (see #0298)
  5884. Note:    disabling the ECM character allows applications to send data which
  5885.       includes the ECM character
  5886. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  5887. --------S-14B1-------------------------------
  5888. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  5889.     AH = B1h
  5890. Return: AH = return code (00h,07h,0Ah) (see #0298)
  5891. Desc:    provide a means for the application or terminal emulator to perform
  5892.       the same action normally caused by the ECM character
  5893. SeeAlso: AH=B0h,AH=B2h
  5894. --------S-14B2-------------------------------
  5895. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  5896.     AH = B2h
  5897. Return: AH = return code (00h,07h,0Ah) (see #0298)
  5898.     AL = watch flag (00h disabled, 01h enabled)
  5899. Desc:    determine whether the ECM character is enabled
  5900. SeeAlso: AH=B0h,AH=B1h
  5901. --------S-14B3-------------------------------
  5902. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  5903.     AH = B3h
  5904.     AL = direction (00h get, 01h set)
  5905.     DH = session ID (00h for external session managment)
  5906.     DL = configuration item (00h = end-of-line mapping)
  5907.     CX = new configuration item value (if AL=01h)
  5908.         ---if DL=00h---
  5909.         CH = application EOL type (app to Telnet client)
  5910.         01h application will send lone CR
  5911.         02h application will send CR-? pair
  5912.         CL = driver EOL type (Telnet client to Telnet server)
  5913.         01h driver should send CR-NUL pair
  5914.         02h driver should send CR-LF pair
  5915. Return: AH = return code (00h,03h,09h-0Bh) (see #0298)
  5916.     ---if AL=00h---
  5917.     CX = configuration item value (above)
  5918. SeeAlso: AH=B2h
  5919. --------N-14E0-------------------------------
  5920. INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
  5921.     AH = E0h
  5922.     BX = port number to connect with (default 0017h used if <= 0)
  5923.     CX:DX = Internet address of remote host
  5924.     DS:DI -> 2-byte remote host (session) identifier
  5925.     ES:SI -> 1700-byte buffer for Telnet state record
  5926.         0000h:0000h to use TelAPI internally-allocated space
  5927. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0301)
  5928.     ES:SI buffer filled with state record
  5929.     ES:SI -> internally-allocated state record in some versions
  5930. Note:    the remote host identifier may be used to refer to this connection
  5931. SeeAlso: AH=E1h,AH=ECh,AX=FF00h
  5932.  
  5933. (Table 0301)
  5934. Values for TelAPI status:
  5935.  0000h-7FFFh    successful (session number)
  5936.  FED3h    (-301)    no session allocated, or out of TelAPI data space
  5937.  FF37h    (-201)    all sessions in use
  5938.  FFBDh    (-67)    unknown hostname
  5939.  FFC0h    (-64)    host not functioning
  5940.  FFC3h    (-61)    connection attempt refused
  5941.  FFC4h    (-60)    connection attempt timed out
  5942.  FFC8h    (-56)    socket already connected
  5943.  FFCDh    (-51)    network is unreachable
  5944.  FFDDh    (-35)    operation would block
  5945. --------S-14E000-----------------------------
  5946. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  5947.     AX = E000h
  5948.     DX = port number (0-3)
  5949. Return: ES:BX -> status block (see #0302)
  5950. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  5951.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  5952.       the .DRV extension)
  5953. SeeAlso: AX=E006h
  5954.  
  5955. Format of MX5 Extended FOSSIL status block:
  5956. Offset    Size    Description    (Table 0302)
  5957.  00h    BYTE    flag: active (00h no, 01h yes)
  5958.  01h    BYTE    MNP level (2,4,5)
  5959.  02h    BYTE    series ID from remote MNP
  5960.  03h    DWORD    total packets transmitted
  5961.  07h    DWORD    duplicate packets transmitted
  5962.  0Bh    DWORD    maximum speed
  5963.  0Fh    DWORD    total packets received
  5964.  13h    DWORD    duplicate packets received
  5965.  17h    DWORD    maximum speed
  5966. --------S-14E001-----------------------------
  5967. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  5968.     AX = E001h
  5969.     BH = function
  5970.         00h get MNP level
  5971.         01h set MNP level
  5972.         BL = new level (00h none, 02h/04h/05h MNP level N)
  5973.     DX = port number (0-3)
  5974. Return: BL = MNP level
  5975. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  5976. --------S-14E002-----------------------------
  5977. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  5978.     AX = E002h
  5979.     BH = function
  5980.         00h get answer/originate mode
  5981.         01h set mode
  5982.         BL = new mode (00h originate [default], 01h answer)
  5983.     DX = port number (0-3)
  5984. Return: BL = answer/originate mode
  5985. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  5986. --------S-14E003-----------------------------
  5987. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  5988.     AX = E003h
  5989.     BH = function
  5990.         00h get wait ticks
  5991.         01h set wait ticks
  5992.         BL = MNP wait ticks (default 0Eh)
  5993.     DX = port number (0-3)
  5994. Return: BL = wait ticks
  5995. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  5996. --------S-14E004-----------------------------
  5997. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  5998.     AX = E004h
  5999.     BH = function
  6000.         00h get sound level
  6001.         01h set sound level
  6002.         BL = new sound level (00h off, 01h on [default])
  6003.     DX = port number
  6004. Return: BL = sound state
  6005. Desc:    specify whether MX5 should generate beeps after an MNP connection
  6006.       (three high beeps if successful, high then low on connection failure)
  6007. SeeAlso: AX=E002h,AX=E006h
  6008. --------S-14E005-----------------------------
  6009. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  6010.     AX = E005h
  6011. Return: BX = segment of MX5's memory block or 0000h on failure
  6012. Note:    caller must free the returned memory block to complete the uninstall
  6013. SeeAlso: AX=E006h
  6014. --------S-14E006BX0000-----------------------
  6015. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  6016.     AX = E006h
  6017.     BX = 0000h
  6018. Return: BX = 4D58h ('MX') if installed
  6019.         AH = major version
  6020.         AL = minor version
  6021. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  6022. --------S-14E007-----------------------------
  6023. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  6024.     AX = E007h
  6025.     CX = number of ticks to wait
  6026. Return: nothing
  6027. SeeAlso: AX=E006h
  6028. --------N-14E1-------------------------------
  6029. INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
  6030.     AH = E1h
  6031.     BX = connection ID
  6032. Return: AX = status (0000h,FFF7h,maybe others) (see #0301)
  6033. Note:    flushes and releases all buffers and data space used by the connection
  6034. SeeAlso: AH=E0h,AH=E6h,AX=FF00h
  6035. --------N-14E2-------------------------------
  6036. INT 14 - TelAPI - "telread" - BUFFERED READ
  6037.     AH = E2h
  6038.     BX = connection ID (see AH=E0h"TelAPI")
  6039.     CX = length of buffer in bytes
  6040.     ES:SI -> buffer for data
  6041. Return: AX > 0000h number of characters actually read
  6042.     AX = 0000h host has closed connection
  6043.     AX < 0000h error code (see #0301)
  6044. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  6045.       negotiates various Telnet options, and immediately executes several
  6046.       different Telnet action commands
  6047. SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
  6048. --------N-14E3-------------------------------
  6049. INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
  6050.     AH = E3h
  6051.     BX = connection ID
  6052.     CX = length of buffer in bytes
  6053.     ES:SI -> buffer containing data
  6054. Return: AX > 0000h number of characters actually written
  6055.     AX < 0000h error code (see #0301)
  6056. Note:    translates local EOL into CRLF if the connection is in ASCII mode,
  6057.       sends the appropriate Telnet commands for the characters selected
  6058.       for IP, AYT, AO, EC, EL, and Break
  6059. SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
  6060. --------N-14E4-------------------------------
  6061. INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
  6062.     AH = E4h
  6063.     BX = connection ID (see AH=E0h"TelAPI")
  6064.     CX = Telnet command/option identifier (see #0304)
  6065.     ES:SI -> buffer containing command/option argument (see #0303)
  6066. Return: AX = status (0000h, etc.) (see #0301)
  6067. Desc:    start filter control, initiate Telnet option negotiation, or get filter
  6068.       control status
  6069. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  6070.  
  6071. Format of TelAPI Telnet command/option argument:
  6072. Offset    Size    Description    (Table 0303)
  6073.  00h  5 WORD    numeric arguments
  6074.  0Ah    DWORD    -> ASCIZ string
  6075. SeeAlso: #0304
  6076.  
  6077. (Table 0304)
  6078. Values for TelAPI Telnet command/option identifier:
  6079.  01h    ASCII        args: none
  6080.  02h    BINARY        args: none
  6081.  03h    LOCALECHO    args: none        client echos data
  6082.  04h    REMOTEECHO    args: none        server echos data
  6083.  05h    SGA        args: none        Suppress Go-Ahead signal
  6084.  07h    CHARMODE    args: none        no line-buffering
  6085.  08h    LINEMODE    args: -> erase-line ch    perform line-buffering
  6086.  09h    RECVEOL        args: EOL type
  6087.  0Ah    SENDEOL        args: EOL type
  6088.  0Bh    EOR        args: none        enable end-of-record sequence
  6089.  0Dh    BREAK        args: -> break char
  6090.  0Eh    VERBOSE        args: verbosity        display Telnet negotiations?
  6091.  0Fh    AYT        args: -> AYT escape ch
  6092.  10h    AO        args: -> AO escape char
  6093.  11h    IP        args: -> IP escape char
  6094.  12h    EC        args: -> escape char
  6095.  13h    EL        args: -> escape char
  6096.  14h    STATUS        args: type; returns data in structure
  6097.  18h    TERMTYPE    args: -> terminal type
  6098.  19h    ATTACHPORT    args: port number ; returns session number
  6099.  1Bh    TRANSMIT_EOR    args: EOR enabled    append EOR to every telwrite?
  6100. SeeAlso: #0303
  6101. --------N-14E5-------------------------------
  6102. INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
  6103.     AH = E5h
  6104. Return: AX = status (0000h,other) (see also #0301)
  6105.         FFFFh unable to reset
  6106. Desc:    close all sessions and reset TelAPI to defaults
  6107. SeeAlso: AH=E1h,AH=E6h,AX=FF00h
  6108. --------N-14E6-------------------------------
  6109. INT 14 - TelAPI - "telunload" - UNINSTALL
  6110.     AH = E6h
  6111. Return: AX = status
  6112.         0000h successful
  6113.         FFFFh unable to uninstall
  6114. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  6115.     this function invokes AH=E5h internally
  6116. SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  6117. --------N-14E7-------------------------------
  6118. INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
  6119.     AH = E7h
  6120.     ES:SI -> 10-word buffer for session list
  6121. Return: AX = 0000h (successful)
  6122.     ES:SI buffer filled
  6123. Desc:    determine, for each of the ten allowable sessions, whether the session
  6124.       is currently available
  6125. Note:    each word in the buffer is filled with either 0000h to indicate that
  6126.      the corresponding sesion is unavailable, or 0001h if available
  6127. SeeAlso: AH=E0h,AH=E5h,AX=FF00h
  6128. --------N-14E8-------------------------------
  6129. INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
  6130.     AH = E8h
  6131.     BX = connection ID (see AH=E0h"TelAPI")
  6132.     CX = serial port number (0000h-0003h = COM1-COM4)
  6133. Return: AX = status
  6134.         0000h successful
  6135.         FFFFh failed
  6136. SeeAlso: AH=E0h,AH=E9h,AX=FF00h
  6137. --------N-14E9-------------------------------
  6138. INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
  6139.     AH = E9h
  6140.     DX = serial port number (0000h-0003h = COM1-COM4)
  6141. Return: AX >= 0000h session number
  6142.     AX < 0000h error code (see #0301)
  6143. SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
  6144. --------N-14EA-------------------------------
  6145. INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
  6146.     AH = EAh
  6147.     BX = connection ID (see AH=E0h"TelAPI")
  6148.     ES:SI -> buffer for status info (see #0305)
  6149. Return: AX = status (0000h,FFFFh,etc.)
  6150. SeeAlso: AH=E9h,AH=EBh,AX=FF00h
  6151.  
  6152. Format of TelAPI Telnet connection status information:
  6153. Offset    Size    Description    (Table 0305)
  6154.  00h  4 BYTEs    remote host IP address
  6155.  04h 20 BYTEs    reserved
  6156.  18h    WORD    local port number
  6157.  1Ah    BYTE    connection mode (00h = ASCII, 01h = Binary)
  6158.  1Bh    BYTE    echo flag (00h local, 01h remote)
  6159.  1Ch    BYTE    SGA flag (00h will, 01h won't)
  6160.  1Dh    BYTE    EOR negotation flag (00h do negotiate, 01h don't)
  6161.  1Eh    BYTE    buffering (00h line mode, 01h character mode)
  6162.  1Fh    BYTE    reserved
  6163.  20h    BYTE    verbose flag (00h no, 01h verbose mode)
  6164.  21h    BYTE    received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
  6165.  22h    BYTE    sent EOL (00h no translation, 01h CR, 02h LF)
  6166.  23h    BYTE    break character
  6167.  24h    BYTE    IP escape character
  6168.  25h    BYTE    AO escape character
  6169.  26h    BYTE    AYT escape character
  6170.  27h    BYTE    EC escape character
  6171.  28h    BYTE    EL escape character
  6172.  29h 41 BYTEs    ASCIZ Telnet-negotiated terminal type
  6173.  52h  9 BYTEs    session ID
  6174. SeeAlso: #0306
  6175. --------N-14EB-------------------------------
  6176. INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
  6177.     AH = EBh
  6178.     ES:SI -> buffer for session statuses (see #0306)
  6179. Return: ES:SI buffer filled
  6180. SeeAlso: AH=E9h,AH=EAh,AX=FF00h
  6181.  
  6182. Format of TelAPI session status information [array]:
  6183. Offset    Size    Description    (Table 0306)
  6184.  00h    BYTE    session state (00h available, 01h connected)
  6185.  01h  9 BYTEs    session ID if connected
  6186.  0Ah    WORD    attached COM port if connected, FFFFh if not
  6187. SeeAlso: #0305
  6188. --------N-14EC-------------------------------
  6189. INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
  6190.     AH = ECh
  6191.     BX = port number to connect with (default 0017h used if <= 0)
  6192.     CX:DX = Internet address of remote host
  6193.     DS:DI -> 2-byte remote host (connection) identifier
  6194.     ES:SI -> 1700-byte buffer for Telnet state record
  6195.         0000h:0000h to use TelAPI internally-allocated space
  6196. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0301)
  6197.     ES:SI buffer filled with state record
  6198.     ES:SI -> internally-allocated state record in some versions
  6199. Notes:    the remote host identifier may be used to refer to this connection
  6200.     this function returns immediately; use AH=EDh to check whether the
  6201.       connection has been established yet
  6202.     this function is not supported by the Microdyne TelAPI v3.7
  6203. SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
  6204. --------N-14ED-------------------------------
  6205. INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
  6206.     AH = EDh
  6207.     BX = connection ID (see AH=ECh)
  6208. Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #0301)
  6209.         0000h session now connected
  6210.         0001h connection still in progress
  6211. Note:    this function is not supported by the Microdyne TelAPI v3.7
  6212. SeeAlso: AH=EDh,AX=FF00h
  6213. --------a-14F0F0-----------------------------
  6214. INT 14 - ASAP v1.0 - ???
  6215.     AX = F0F0h
  6216.     DX = ???
  6217.     ???
  6218. Return: ???
  6219. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  6220.       by MicroTalk
  6221. SeeAlso: AX=F0F1h
  6222. --------a-14F0F1DX0000-----------------------
  6223. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  6224.     AX = F0F1h
  6225.     DX = 0000h
  6226. Return: DX = segment of resident code
  6227.         0000h if not installed
  6228. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  6229.       by MicroTalk
  6230. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  6231. --------S-14F4FF-----------------------------
  6232. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  6233.     AX = F4FFh
  6234.     DX = port (00h-03h)
  6235. Return: CF clear if present
  6236.         AX = 0000h
  6237.     CF set if not present
  6238.         AX <> 0000h
  6239. SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
  6240. --------S-14F9-------------------------------
  6241. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  6242.     AH = F9h
  6243.     DX = port (00h-03h)
  6244. Return: nothing
  6245. SeeAlso: AX=F4FFh
  6246. --------S-14FA-------------------------------
  6247. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  6248.     AH = FAh
  6249.     DX = port (00h-03h)
  6250. Return: nothing
  6251. SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
  6252. --------S-14FB-------------------------------
  6253. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  6254.     AH = FBh
  6255.     AL = modem control register (see #0238 at AH=05h"SERIAL")
  6256.     DX = port (00h-03h)
  6257. Return: nothing
  6258. SeeAlso: AH=05h"SERIAL"
  6259. --------S-14FC-------------------------------
  6260. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  6261.     AH = FCh
  6262.     DX = port (00h-03h)
  6263. Return: AH = RS232 status bits (see #0208 at AH=03h)
  6264.     AL = character
  6265. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  6266. --------S-14FD02-----------------------------
  6267. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  6268.     AX = FD02h
  6269. Return: CX = number of characters available
  6270. --------N-14FF00-----------------------------
  6271. INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
  6272.     AX = FF00h
  6273. Return: AX = 00FFh if installed
  6274.         BX = version number * 100 (decimal)
  6275. SeeAlso: AH=E6h,AX=F4FFh
  6276. --------S-14FF01-----------------------------
  6277. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  6278.     AX = FF01h
  6279.     CX = length of buffer (0000h to cancel buffer assignment)
  6280.     DX = port (00h-03h)
  6281.     ES:BX -> send buffer
  6282. Return: nothing
  6283. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  6284. --------S-14FF02-----------------------------
  6285. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  6286.     AX = FF02h
  6287.     CX = length of buffer (0000h to cancel buffer assignment)
  6288.     DX = port (00h-03h)
  6289.     ES:BX -> receive buffer
  6290. Return: nothing
  6291. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h
  6292. --------S-14FFF8-----------------------------
  6293. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  6294.     AX = FFF8h
  6295.     BX = card type (sub-device number)
  6296.     CX = new baudrate divisor
  6297.     DX = index to baud rate
  6298. Return: AH bit 7 set on error
  6299.     AH bit 7 clear if successful
  6300. Program: COMM-DRV is a universal serial communications driver by Willies'
  6301.       Computer Software Company, which supports standard INT 14 and
  6302.       FOSSIL calls as well as its own interfaces
  6303. SeeAlso: AX=8000h"COMM-DRV"
  6304. --------S-14FFFB-----------------------------
  6305. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  6306.     AX = FFFBh
  6307.     DX = port number
  6308. Return: AH bit 7 set on error
  6309.     AH bit 7 clear if successful
  6310.         BX = highest port number
  6311. --------S-14FFFC-----------------------------
  6312. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  6313.     AX = FFFCh
  6314.     DX = port number
  6315. Return: AH bit 7 set on error
  6316.     AH bit 7 clear if successful
  6317.         BX = flags (see #0307)
  6318. SeeAlso: AX=FFFDh
  6319.  
  6320. Bitfields for INT 14h flags:
  6321. Bit(s)    Description    (Table 0307)
  6322.  0    port active for INT 14h
  6323.  1    interface behaving like a FOSSIL driver
  6324. --------S-14FFFD-----------------------------
  6325. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  6326.     AX = FFFDh
  6327.     BX = flags (see #0307)
  6328.     DX = port number
  6329. Return: AH bit 7 set on error
  6330.     AH bit 7 clear if successful
  6331. SeeAlso: AX=FFFCh
  6332. --------S-14FFFE-----------------------------
  6333. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  6334.     AX = FFFEh
  6335. Return: AH bit 7 set on error
  6336.     AH bit 7 clear if successful
  6337. --------S-14FFFF-----------------------------
  6338. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  6339.     AX = FFFFh
  6340.     BX:SI -> DWORD buffer for address of information area (see #0308)
  6341.           (initialized to zeros)
  6342. Return: BX:SI buffer filled with nonzero value if installed
  6343. Program: COMM-DRV is a universal serial communications driver by Willies'
  6344.       Computer Software Company, which supports standard INT 14 and
  6345.       FOSSIL calls as well as its own interfaces
  6346. Index:    installation check;COMM-DRV
  6347.  
  6348. Format of COMM-DRV information area:
  6349. Offset    Size    Description    (Table 0308)
  6350.  00h  8 BYTEs    signature "COMM-DRV"
  6351.  08h  2 BYTEs    00h,00h
  6352.  0Ah    DWORD    -> direct address mapping table
  6353.  0Eh    DWORD    previous INT 14 vector
  6354. --------t-15---------------------------------
  6355. INT 15 - Microsoft TSR Specification
  6356.     No additional information available at this time.
  6357. --------B-1500-------------------------------
  6358. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  6359.     AH = 00h
  6360. Return: CF set on error
  6361.         AH = 86h no cassette present
  6362.     CF clear if successful
  6363. SeeAlso: AH=01h"CASSETTE"
  6364. --------M-1500-------------------------------
  6365. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  6366.     AH = 00h
  6367. Return: CX = signed X count
  6368.     DX = signed Y count
  6369. --------O-1500-------------------------------
  6370. INT 15 - VMiX v2+ - INSTALLATION CHECK
  6371.     AH = 00h
  6372. Return: DX = 0798h if installed
  6373.         AX = version (AH = major, AL = minor)
  6374. --------T-1500-------------------------------
  6375. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  6376.     AH = 00h
  6377. Return: nothing
  6378. Note:    if issued by the highest-priority task while MultiDOS is using
  6379.       priority-based rather than round-robin scheduling, control will be
  6380.       returned to the caller immediately
  6381. SeeAlso: AH=03h"MultiDOS",AX=1000h
  6382. --------B-1501-------------------------------
  6383. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  6384.     AH = 01h
  6385. Return: CF set on error
  6386.         AH = 86h no cassette present
  6387.     CF clear if successful
  6388. SeeAlso: AH=00h"CASSETTE"
  6389. --------b-1501-------------------------------
  6390. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  6391.     AH = 01h
  6392.     AL = NVRAM location (00h to 3Fh) (see #0309)
  6393.     BL = NVRAM data value
  6394. Return: AH = return code
  6395.         00h OK
  6396.         01h address bad
  6397.         02h write error
  6398. SeeAlso: AH=02h"Amstrad"
  6399.  
  6400. Format of Amstrad NVRAM:
  6401. Offset    Size    Description    (Table 0309)
  6402.  00h    BYTE    time of day: seconds
  6403.  01h    BYTE    alarm time: seconds
  6404.  02h    BYTE    time of day: minutes
  6405.  03h    BYTE    alarm time: minutes
  6406.  04h    BYTE    time of day: hours
  6407.  05h    BYTE    alarm time: hours
  6408.  06h    BYTE    day of week, 1 = Sunday
  6409.  07h    BYTE    day of month
  6410.  08h    BYTE    month
  6411.  09h    BYTE    year mod 100
  6412.  0Ah    BYTE    RTC status register A (see #0310)
  6413.  0Bh    BYTE    RTC status register B (see #0311)
  6414.  0Ch    BYTE    RTC status register C (read-only) (see #0312)
  6415.  0Dh    BYTE    RTC status register D
  6416.         bit 7: battery good
  6417.  0Eh  6 BYTEs    time and date machine last used
  6418.  14h    BYTE    user RAM checksum
  6419.  15h    WORD    Enter key scancode/ASCII code
  6420.  17h    WORD    Forward delete key scancode/ASCII code
  6421.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  6422.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  6423.  1Dh    WORD    mouse button 1 scancode/ASCII code
  6424.  1Fh    WORD    mouse button 2 scancode/ASCII code
  6425.  21h    BYTE    mouse X scaling factor
  6426.  22h    BYTE    mouse Y scaling factor
  6427.  23h    BYTE    initial VDU mode and drive count
  6428.  24h    BYTE    initial VDU character attribute
  6429.  25h    BYTE    size of RAM disk in 2K blocks
  6430.  26h    BYTE    initial system UART setup byte
  6431.  27h    BYTE    initial external UART setup byte
  6432.  28h 24 BYTEs    available for user application
  6433. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  6434.       the clock chip
  6435.  
  6436. Bitfields for RTC status register A:
  6437. Bit(s)    Description    (Table 0310)
  6438.  7    set if date/time being updated
  6439.  6-4    time base speed, default 010 = 32768 Hz
  6440.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  6441. SeeAlso: #0309
  6442.  
  6443. Bitfields for RTC status register B:
  6444. Bit(s)    Description    (Table 0311)
  6445.  7    clear if normal update, set if abort update
  6446.  6    periodic interrupt enable
  6447.  5    alarm interrupt enable
  6448.  4    update end interrupt enable
  6449.  3    square wave enable
  6450.  2    date mode (clear = BCD, set = binary)
  6451.  1    24-hour format
  6452.  0    daylight saving time enable
  6453. SeeAlso: #0309
  6454.  
  6455. Bitfields for RTC status register C:
  6456. Bit(s)    Description    (Table 0312)
  6457.  7    IRQF flag
  6458.  6    PF flag
  6459.  5    AF flag
  6460.  4    UF flag
  6461. SeeAlso: #0309
  6462. --------O-1501-------------------------------
  6463. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  6464.     AH = 01h
  6465.     STACK:    WORD    object ID of requestor
  6466.         DWORD    pointer to ASCIZ name of requested method
  6467.             "assign" assign channel to object
  6468.             "deassign" deassign channel
  6469.             "cursor" set cursor on/off
  6470.             "init" initialize comm port
  6471.             "open" open I/O channel
  6472.             "position" set cursor position
  6473.             "receive" get buffered packet from comm port
  6474.             "send" send buffered packet to comm port
  6475.             "vio" set current virtual I/O to specified channel
  6476.             "window" make window at cursor position
  6477.         ---if "assign"---
  6478.          WORD    object UID
  6479.          WORD    caller UID/PID
  6480.          DWORD    CSL with port
  6481.         ---if "deassign"---
  6482.          WORD    channel ID
  6483.         ---if "cursor"---
  6484.          WORD    channel ID (must be a SRCSINK)
  6485.          WORD    new state (0000h off, 0001h on)
  6486.         ---if "init"---
  6487.          WORD    channel ID (must be a SRCSINK)
  6488.          WORD    comm port number (00h-03h)
  6489.          WORD    UART init code
  6490.         ---if "open"---
  6491.          WORD    channel ID
  6492.         ---if "position"---
  6493.          WORD    channel ID (must be a SRCSINK)
  6494.          WORD    position (high byte = row, low byte = column)
  6495.         ---if "receive"---
  6496.          DWORD    pointer to buffer
  6497.         ---if "send"---
  6498.          WORD    length of buffer
  6499.          DWORD    pointer to buffer
  6500.         ---if "vio"---
  6501.          WORD    channel ID (must be a SRCSINK)
  6502.         ---if "window"---
  6503.          WORD    top left (high byte = row, low byte = column)
  6504.          WORD    bottom right (high byte = row, low byte = column)
  6505. Return: DX:AX -> IRP structure or 0000h:0000h
  6506. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  6507. --------T-1501-------------------------------
  6508. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  6509.     AH = 01h
  6510.     AL = semaphore number (00h-3Fh)
  6511. Return: AH = status
  6512.         00h successful
  6513.         02h invalid semaphore number
  6514. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  6515.       task and the call returns immediately
  6516.     if the semaphore is already owned by another task, the calling task
  6517.       is placed on a queue for the semaphore and suspended until it can
  6518.       become owner of the semaphore
  6519.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  6520. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  6521. --------B-1502-------------------------------
  6522. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  6523.     AH = 02h
  6524.     CX = number of bytes to read
  6525.     ES:BX -> buffer
  6526. Return: CF clear if successful
  6527.         DX = number of bytes read
  6528.         ES:BX -> byte following last byte read
  6529.     CF set on error
  6530.     AH = status (see #0313)
  6531. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  6532.  
  6533. (Table 0313)
  6534. Values for Cassette status:
  6535.  00h    successful
  6536.  01h    CRC error
  6537.  02h    bad tape signals
  6538.  04h    no data
  6539.  80h    invalid command
  6540.  86h    no cassette present
  6541. --------b-1502-------------------------------
  6542. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  6543.     AH = 02h
  6544.     AL = NVRAM location (00h to 3Fh)
  6545. Return: AH = return code
  6546.         00h OK
  6547.         01h address bad
  6548.         02h checksum error
  6549.     AL = NVRAM data value
  6550. SeeAlso: AH=01h"Amstrad"
  6551. --------O-1502-------------------------------
  6552. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  6553.     AH = 02h
  6554.     STACK:    WORD    object ID of requestor
  6555.         DWORD    pointer to ASCIZ name of requested method
  6556.             "assign" allocate low memory block
  6557.             "assign extended" allocate extended memory pages
  6558.             "assign gdt" allocate GDT selector
  6559.             "paged" allocate low paged memory
  6560.             "paged extended" alllocate extended memory pages
  6561.             "deassign" free memory block
  6562.             "deassign gdt" free GDT selector
  6563.             "getvpage" get physical address for virtual page
  6564.             "setvpage" set physical address for virtual page
  6565.             "info" get VMiX memory usage info block
  6566.             "move" move contents of 32-bit memory
  6567.             "newmcb" make new DOS memory control block
  6568.             "owner" get process ID of MCB or PSP owner
  6569.             "umb" allocate upper memory block
  6570.             "video" toggle system use of video memory and get stat
  6571.         ---if "assign"---
  6572.          WORD    number of objects
  6573.          WORD    size in bytes (multiple of 512 bytes)
  6574.         ---if "assign extended"---
  6575.          WORD    number of objects
  6576.          WORD    size in bytes (multiple of 4K)
  6577.         ---if "assign gdt"---
  6578.          WORD    access type (low byte)
  6579.          WORD    segment size in paragraphs
  6580.          DWORD    pointer to start of physical segment
  6581.         ---if "paged"---
  6582.          WORD    number of 512-byte pages
  6583.         ---if "paged extended"
  6584.          WORD    number of 4K pages
  6585.         ---if "deassign"---
  6586.          DWORD    pointer returned by previous allocation call
  6587.         ---if "deassign gdt"---
  6588.          WORD    GDT selector
  6589.         ---if "getvpage"---
  6590.          WORD    owner's process ID
  6591.          DWORD    pointer to buffer for page structure (struct VPGE)
  6592.         ---if "setvpage"---
  6593.          WORD    owner's process ID
  6594.          DWORD    pointer to new page structure (struct VPGE)
  6595.         ---if "info"---
  6596.          no additional arguments
  6597.         ---if "move"
  6598.          DWORD    32-bit source address
  6599.          DWORD    32-bit destination address
  6600.          WORD    number of words to move
  6601.         ---if "newmcb"---
  6602.          DWORD    pointer to new MCB's location
  6603.          WORD    size of memory block
  6604.          DWORD    pointer to ASCIZ name string (max 8 chars)
  6605.         ---if "owner"---
  6606.          WORD    MCB or PSP segment
  6607.         ---if "umb"---
  6608.          WORD    size in paragraphs
  6609.         ---if "video"---
  6610.          no additional arguments
  6611. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  6612. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  6613. --------T-1502-------------------------------
  6614. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  6615.     AH = 02h
  6616.     AL = semaphore number (00h-3Fh)
  6617. Return: AH = status
  6618.         00h successful
  6619.         01h not semaphore owner
  6620.         02h invalid semaphore number
  6621. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  6622.       queue will become the new owner and be reawakened
  6623.     do not use within an interrupt handler
  6624. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  6625. --------B-1503-------------------------------
  6626. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  6627.     AH = 03h
  6628.     CX = number of bytes to write
  6629.     ES:BX -> data buffer
  6630. Return: CF clear if successful
  6631.         ES:BX -> byte following last byte written
  6632.     CF set on error
  6633.     AH = status (see #0313)
  6634.     CX = 0000h
  6635. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  6636. --------V-1503-------------------------------
  6637. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  6638.     AH = 03h
  6639.     AL = value (I,R,G,B bits)
  6640. Return: nothing
  6641. SeeAlso: AH=04h"Amstrad"
  6642. --------O-1503-------------------------------
  6643. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  6644.     AH = 03h
  6645.     STACK:    DWORD    pointer to ASCII prompt
  6646.         WORD    field outline character
  6647.         WORD    length of input field (max 7Fh)
  6648.         DWORD    address of pointer to input buffer
  6649. Return: AX = length of input (input buffer is padded with blanks)
  6650. SeeAlso: AH=04h"VMiX"
  6651. --------T-1503-------------------------------
  6652. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  6653.     AH = 03h
  6654.     DX = number of time slices to remain suspended
  6655. Return: after specified interval has elapsed
  6656. Note:    when priority-based scheduling is in use, high-priority tasks should
  6657.       use this function to yield the processor
  6658. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  6659. --------B-1504-------------------------------
  6660. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  6661.     AH = 04h
  6662.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0314)
  6663.     DS = segment containing ABIOS RAM extensions (zero if none)
  6664. Return: CF clear if successful
  6665.         AH = 00h success
  6666.         ES:DI buffer filled
  6667.         AL destroyed
  6668.     CF set on failure
  6669.         AX destroyed
  6670.         AH = 80h/86h if not supported
  6671. SeeAlso: AH=05h"ABIOS",AH=C1h
  6672.  
  6673. Format of ABIOS System Parameter Table:
  6674. Offset    Size    Description    (Table 0314)
  6675.  00h    DWORD    FAR address of ABIOS Common Start Routine
  6676.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  6677.  08h    DWORD    FAR address of ABIOS Time-out Routine
  6678.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  6679.  0Eh 16 BYTEs    reserved
  6680.  1Eh    WORD    number of entries in initialization table
  6681. --------V-1504-------------------------------
  6682. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  6683.     AH = 04h
  6684.     AL = value (RDSEL1 and RDSEL0)
  6685. Return: nothing
  6686. SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad"
  6687. --------O-1504-------------------------------
  6688. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  6689.     AH = 04h
  6690.     STACK:    DWORD    control string
  6691.         DWORD    array of arguments
  6692. Return: nothing
  6693. SeeAlso: AH=03h"VMiX"
  6694. --------T-1504-------------------------------
  6695. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  6696.     AH = 04h
  6697.     AL = mailbox number (00h-3Fh)
  6698.     CX = message length in bytes
  6699.     DS:SI -> message
  6700. Return: AH = status
  6701.         00h successful
  6702.         01h out of message memory
  6703.         02h invalid mailbox number
  6704. Note:    the message is copied into a system buffer; the caller may immediately
  6705.       reuse its buffer
  6706. SeeAlso: AH=05h"MultiDOS"
  6707. --------B-1505-------------------------------
  6708. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  6709.     AH = 05h
  6710.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0315)
  6711.     DS = segment containing ABIOS RAM extensions (zero if none)
  6712. Return: CF clear if successful
  6713.         AH = 00h success
  6714.         ES:DI buffer filled
  6715.         AL destroyed
  6716.     CF set on failure
  6717.         AX destroyed
  6718.         AH = 80h/86h if not supported
  6719. SeeAlso: AH=04h"ABIOS",AH=C1h
  6720.  
  6721. Format of one entry of ABIOS Initialization Table:
  6722. Offset    Size    Description    (Table 0315)
  6723.  00h    WORD    device ID (see #0316)
  6724.  02h    WORD    number of Logical IDs
  6725.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  6726.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  6727.  0Ah    WORD    request block length
  6728.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  6729.  0Eh    WORD    Data Pointers length (in Common Data Area)
  6730.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  6731.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  6732.  12h  6 BYTEs    reserved
  6733.  
  6734. (Table 0316)
  6735. Values for ABIOS device ID:
  6736.  00h    ABIOS internal calls
  6737.  01h    floppy disk
  6738.  02h    hard disk
  6739.  03h    video
  6740.  04h    keyboard
  6741.  05h    parallel port
  6742.  06h    serial port
  6743.  07h    system timer
  6744.  08h    real-time clock
  6745.  09h    system services
  6746.  0Ah    NMI
  6747.  0Bh    mouse
  6748.  0Eh    CMOS RAM
  6749.  0Fh    DMA
  6750.  10h    Programmable Option Select (POS)
  6751.  16h    keyboard password
  6752. --------V-1505-------------------------------
  6753. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  6754.     AH = 05h
  6755.     AL = value (I,R,G,B bits)
  6756. Return: nothing
  6757. SeeAlso: AH=04h"Amstrad"
  6758. --------O-1505-------------------------------
  6759. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  6760.     AH = 05h
  6761. Return: AX = process ID
  6762. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  6763. --------T-1505-------------------------------
  6764. INT 15 - MultiDOS Plus - CHECK MAILBOX
  6765.     AH = 05h
  6766.     AL = mailbox number (00h-3Fh)
  6767. Return: AH = status
  6768.         00h successful
  6769.         DX = length of first message in queue, 0000h if no message
  6770.         02h invalid mailbox number
  6771. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  6772. --------b-1506-------------------------------
  6773. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  6774.     AH = 06h
  6775. Return: BX = version number
  6776. --------O-1506-------------------------------
  6777. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  6778.     AH = 06h
  6779.     STACK:    WORD    process ID
  6780. Return: DX:AX -> process control block
  6781. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  6782. --------T-1506-------------------------------
  6783. INT 15 - MultiDOS Plus - READ MAILBOX
  6784.     AH = 06h
  6785.     AL = mailbox number (00h-3Fh)
  6786.     CX = size of buffer in bytes
  6787.     ES:DI -> buffer for message
  6788. Return: AH = status
  6789.         00h successful
  6790.         CX = number of bytes copied
  6791.         DX = actual length of message
  6792.         02h invalid mailbox number
  6793. Note:    if the caller's buffer is not large enough, the message is truncated
  6794.       and the remainder is lost
  6795. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  6796. --------O-1507-------------------------------
  6797. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  6798.     AH = 07h
  6799.     STACK:    WORD    object type
  6800. Return: DX:AX -> object control block
  6801. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  6802. --------T-1507-------------------------------
  6803. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  6804.     AH = 07h
  6805.     BX:CX = entry point of new task
  6806.     DX = stack size in paragraphs
  6807. Return: AH = status
  6808.         00h successful
  6809.         01h no free task control blocks
  6810.         02h no free memory for task's stack
  6811. Note:    execution returns immediately to calling task
  6812. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  6813. --------O-1508-------------------------------
  6814. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  6815.     AH = 08h
  6816.     STACK:    WORD    channel ID
  6817. Return: DX:AX -> channel control block
  6818. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  6819. --------T-1508-------------------------------
  6820. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  6821.     AH = 08h
  6822. Return: calling task terminated, so execution never returns to caller
  6823. Notes:    an internal task must be terminated with this function rather than a
  6824.       DOS termination function
  6825.     task's stack space is returned to parent task's memory pool
  6826. SeeAlso: AH=07h"MultiDOS"
  6827. --------O-1509-------------------------------
  6828. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  6829.     AH = 09h
  6830.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  6831.         WORD    subqueue ID
  6832. Return: AX = queue ID
  6833. SeeAlso: AH=0Ah"VMiX"
  6834. --------T-1509-------------------------------
  6835. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  6836.     AH = 09h
  6837.     AL = new priority
  6838. Return: nothing
  6839. Note:    the priority has different meanings depending on whether priority-
  6840.       based or round-robin scheduling is used
  6841. SeeAlso: AH=07h"MultiDOS"
  6842. --------O-150A-------------------------------
  6843. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  6844.     AH = 0Ah
  6845.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  6846.         WORD    ID of current element in queue chain
  6847. Return: AX = ID of next element
  6848. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  6849. --------T-150A-------------------------------
  6850. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  6851.     AH = 0Ah
  6852.     AL = new interval
  6853.         00h = 55.0 ms (default)
  6854.         80h = 27.5 ms
  6855.         40h = 13.75 ms
  6856.         20h = 6.88 ms
  6857.         10h = 3.44 ms
  6858.         08h = 1.72 ms
  6859. SeeAlso: AH=03h"MultiDOS"
  6860. --------O-150B-------------------------------
  6861. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  6862.     AH = 0Bh
  6863.     STACK:    WORD    caller's UID
  6864.         DWORD    pointer to ASCIZ name of requested method
  6865.             "abort" abort current send/receive on comm port
  6866.             "block" start/end critical section
  6867.             "close" terminate interrupt-drive comm I/O
  6868.             "open" prepare comm port for interrupt-driven I/O
  6869.             "delay" set delay timer and wait
  6870.             "hibernate" put process to sleep
  6871.             "ints" enable/disable interrupt-driven INT 14h
  6872.             "length" get current send/receive buffer offsets
  6873.             "kswitch" switch stacks
  6874.             "numproc" get number of active processes
  6875.             "protocol" set protocol function for comm interrupts
  6876.             "relocate" set/reset VMiX flag for relocating to himem
  6877.             "status" get current open comm port status
  6878.             "wake" awaken a process
  6879.             "xport" get comm port polled for logins
  6880.         ---if "abort"---
  6881.          no additional arguments
  6882.         ---if "block"---
  6883.          WORD    0000h end, 0001h start
  6884.         ---if "close"---
  6885.          no additional arguments
  6886.         ---if "open"---
  6887.          WORD    comm port (00h-03h)
  6888.          WORD    BIOS parameter byte (see #0204 at INT 14/AH=00h),
  6889.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  6890.         ---if "delay"---
  6891.          WORD    time in seconds
  6892.         ---if "hibernate"---
  6893.          WORD    process ID
  6894.         ---if "ints"---
  6895.          WORD    0000h if no, 0001h if yes
  6896.         ---if "length","numproc","relocate","status","xport"---
  6897.          no additional arguments
  6898.         ---if "kswitch"---
  6899.          DWORD    pointer to new stack
  6900.         ---if "protocol"---
  6901.          DWORD    pointer to function (must be in low "assign"ed memory
  6902.             when in 386 mode)
  6903.         ---if "wake"---
  6904.          WORD    process ID
  6905. Return: DX:AX -> result or 0000h:0000h
  6906.         ---if "length"---
  6907.          BYTE    receive offset
  6908.          BYTE    send offset
  6909.         ---if "kswitch"---
  6910.          DWORD    old stack pointer
  6911.         ---if "numproc"---
  6912.          WORD    number of active processes
  6913.         ---if "status"---
  6914.          current open comm port status
  6915.         ---if "xport"---
  6916.          current comm port being polled for logins
  6917. Note:    the "delay" command reportedly disables the keyboard until the delay
  6918.       completes
  6919. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  6920. --------T-150B-------------------------------
  6921. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  6922.     AH = 0Bh
  6923. Return: nothing
  6924. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  6925.       may be restored with AH=0Ch
  6926.     caller's video mode must be same as foreground task's video mode
  6927.     any text written while in the background will be saved to the
  6928.       foreground task's virtual screen when it switches to the background
  6929.     useful if a background task wants to display a message on the
  6930.       foreground screen
  6931. SeeAlso: AH=0Ch"MultiDOS"
  6932. --------O-150C-------------------------------
  6933. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  6934.     AH = 0Ch
  6935.     STACK:    WORD    process ID
  6936. Return: DX:AX -> TSS stack store
  6937. SeeAlso: AH=00h"VMiX"
  6938. --------T-150C-------------------------------
  6939. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  6940.     AH = 0Ch
  6941. Return: nothing
  6942. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  6943.       unless AH=0Bh has been called first
  6944. SeeAlso: AH=0Bh"MultiDOS"
  6945. --------O-150D-------------------------------
  6946. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  6947.     AH = 0Dh
  6948.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  6949.             followed by standard VMiX shell command string
  6950. Return: AX = process ID or error code "SYS_ERROR"
  6951. Note:    the maximum string length is 7Fh characters
  6952. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  6953. --------T-150D-------------------------------
  6954. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  6955.     AH = 0Dh
  6956. Return: nothing
  6957. Note:    calling task receives all time slices until AH=0Eh is called; this
  6958.       allows time-critical events or nonreentrant code to be processed
  6959. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  6960. --------O-150E-------------------------------
  6961. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  6962.     AH = 0Eh
  6963.     STACK:    WORD    process ID
  6964. Return: AX = status (SYS_OK or SYS_ERROR)
  6965. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  6966. --------T-150E-------------------------------
  6967. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  6968.     AH = 0Eh
  6969. Return: nothing
  6970. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  6971. --------d-150F-------------------------------
  6972. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  6973.     AH = 0Fh
  6974.     AL = phase code
  6975.         00h reserved
  6976.         01h surface analysis
  6977.         02h formatting
  6978. Return: CF clear if formatting should continue
  6979.     CF set if formatting should terminate
  6980. Note:    called during ESDI drive formatting after each cylinder is completed
  6981. SeeAlso: INT 13/AH=1Ah
  6982. --------O-150F-------------------------------
  6983. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  6984.     AH = 0Fh
  6985.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  6986.         WORD    ID of element in queue chain
  6987. Return: AX = key
  6988. SeeAlso: AH=0Ah"VMiX"
  6989. --------T-150F-------------------------------
  6990. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  6991.     AH = 0Fh
  6992.     DS:BX -> ASCIZ command
  6993. Return: after command has been processed
  6994. Notes:    specified string is executed as if it had been typed at the MultiDOS
  6995.       command prompt
  6996.     the task is placed on a queue which MultiDOS examines periodically and
  6997.       is suspended until MultiDOS has processed the command
  6998.     all lowercase characters up to the first blank are converted to upper
  6999.       case within the given buffer
  7000. --------O-1510-------------------------------
  7001. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  7002.     AH = 10h
  7003.     STACK:    DWORD    pointer to function
  7004.           N WORDs    function args
  7005. Return: AX = function's return value??? (not specified in documentation)
  7006. Note:    while the function is executing, the following global descriptors are
  7007.       available:
  7008.         20h stack segment
  7009.         38h code segment of function
  7010.         40h data alias for function's code segment
  7011.       additional GDT descriptors can be allocated using AH=02h with
  7012.       function "assign gdt"
  7013. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  7014. --------T-1510-------------------------------
  7015. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  7016.     AH = 10h
  7017.     AL = semaphore number (00h-3Fh)
  7018. Return: AH = status
  7019.         00h semaphore not in use
  7020.         01h semaphore owned by another task
  7021.         02h invalid semaphore number
  7022.         03h semaphore owned by caller
  7023. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  7024. --------Q-151000-----------------------------
  7025. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  7026.     AX = 1000h
  7027. Return: after other processes run
  7028. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  7029.       the current time-slice is set to expire at the next clock tick rather
  7030.       than immediately
  7031. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  7032. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
  7033. SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
  7034. --------Q-151001-----------------------------
  7035. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  7036.     AX = 1001h
  7037.     BX = number of bytes to allocate
  7038. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  7039.     AX = status (DV v2.42)
  7040.         0000h successful
  7041.         0001h failed
  7042. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  7043.       common memory.  Under DV v2.42, this call never generates a user
  7044.       prompt regardless of the SETERROR value; instead, it always returns
  7045.       AX=0001h and ES:DI=0000h:0000h if out of memory
  7046. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  7047. --------Q-151002-----------------------------
  7048. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  7049.     AX = 1002h
  7050.     ES:DI -> previously allocated block
  7051. Return: block freed
  7052. SeeAlso: AX=1001h,AX=DE0Dh
  7053. --------Q-151003-----------------------------
  7054. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  7055.     AX = 1003h
  7056.     BH = attribute
  7057.     BL = character
  7058.     DX = segment of object handle for window
  7059. Return: nothing
  7060. Note:    BX=0000h does not display anything, it only positions the hardware
  7061.       cursor to the logical cursor's current position
  7062. --------Q-1510-------------------------------
  7063. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  7064.     AH = 10h
  7065.     AL = 04h thru 12h
  7066. Return: pops up "Programming error" window in DV 2.x
  7067. --------Q-151013-----------------------------
  7068. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  7069.     AX = 1013h
  7070.     ES:DI -> FAR service routine
  7071. Return: BX = bit mask indicating which bit was allocated
  7072.          0000h if no more bits available
  7073. SeeAlso: AX=1014h,AX=1015h
  7074. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  7075.       interrupt; if other calls need to be made, the interrupt handler
  7076.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  7077. --------Q-151014-----------------------------
  7078. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  7079.     AX = 1014h
  7080.     BX = bit mask from INT 15/AX=1013h
  7081. Return: nothing
  7082. SeeAlso: AX=1013h,AX=1015h
  7083. --------Q-151015-----------------------------
  7084. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  7085.     AX = 1015h
  7086.     BX = bit mask for interrupts to post
  7087. Return: indicated routines will be called: (DV 2.0x) at next task switch
  7088.                        (DV 2.2x) immediately on return from
  7089.                              hardware interrupt
  7090. Notes:    this is one of the few TopView calls which are allowed from a hardware
  7091.       interrupt handler
  7092.     the handler will be called with ES containing the segment of the handle
  7093.       of the next task to be executed; on return, ES must be the segment of
  7094.       a task handle
  7095. SeeAlso: AX=1013h,AX=1014h
  7096. --------Q-151016-----------------------------
  7097. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  7098.     AX = 1016h
  7099.     ES:DI = possible object handle
  7100. Return: BX = status
  7101.         FFFFh if ES:DI is a valid object handle (see #0318)
  7102.         0000h if ES:DI is not
  7103. Note:    under DESQview versions prior to 2.50, an object handle is always a
  7104.       pointer to the object; for versions 2.50 and up, only task handles
  7105.       are always pointers--other handles may consist of a unique object
  7106.       number and offset into DESQview's common memory (see #0327)
  7107. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  7108.  
  7109. (Table 0317)
  7110. Values for DESQview object type:
  7111.  00h    window/task
  7112.  01h    mailbox
  7113.  02h    keyboard
  7114.  03h    timer
  7115.  04h    pointer
  7116.  05h    panel
  7117.  06h    objectq
  7118.  
  7119. Format of DESQview object:
  7120. Offset    Size    Description    (Table 0318)
  7121.  00h    WORD    offset in common memory of previous object of same type
  7122.  02h    WORD    offset in common memory of next object of same type
  7123.  04h    WORD    signature FEDCh (DV 2.42-)
  7124.         signature FEDCh or object number (DV 2.50+)
  7125.  06h    WORD    object type (see #0317)
  7126.  08h    DWORD    object handle to return to caller
  7127.  0Ch    DWORD    canonicalized object address (segment = common memory)
  7128.  10h    WORD    offset in common memory of owning task
  7129.         (0000h for unowned OBJECTQs)
  7130.  12h    WORD    mapping context
  7131.         offset in common memory of mapping context record (see #0320)
  7132.     remainder varies by object type and DESQview version
  7133. ---v2.42 keyboard object---
  7134.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  7135.         bit 15: keyboard opened
  7136.  16h  4 BYTEs    ???
  7137.  1Ah    WORD    priority in OBJECTQ???
  7138.  1Ch    ...
  7139.  25h    WORD    offset in common memory of ??? task
  7140.  27h  4 BYTEs    ???
  7141. ---v2.42 objectq object---
  7142.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  7143.         bit 15: OBJECTQ opened
  7144.  16h  2 BYTEs    ???
  7145.  18h    WORD    offset in common memory of ??? task
  7146.  1Ah  6 BYTEs    ???
  7147. ---v2.42 mailbox object---
  7148.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  7149.         bit 15: mailbox opened
  7150.  1Ah    WORD    priority in OBJECTQ???
  7151.  1Ch  6 BYTEs    ???
  7152.  22h    WORD    offset in common memory of mailbox name (counted string)
  7153.         0000h if no name
  7154.      <= 5 BYTEs ???
  7155. ---v2.22-2.42,2.52,2.60 window/task object---
  7156.  14h    BYTE    00h window, 01h task
  7157.  15h    BYTE    internal (not Switch menu) window number???
  7158.  16h    BYTE    internal (not Switch menu) window number???
  7159.  17h    WORD    segment of internal window record (see #0321)
  7160.  19h  2 BYTEs    ???
  7161.  1Bh    BYTE    cursor row
  7162.  1Ch    BYTE    cursor column
  7163.  1Dh    BYTE    visible window origin, row
  7164.  1Eh    BYTE    visible window origin, column
  7165.  1Fh    BYTE    window height (logical)
  7166.  20h    BYTE    window width (logical)
  7167.  21h    BYTE    window position, row
  7168.  22h    BYTE    window position, column
  7169.  23h    BYTE    window height (visible)
  7170.  24h    BYTE    window width (visible)
  7171.  25h    BYTE    row of top of frame (or window if unframed)
  7172.  26h    BYTE    column of left of frame (or window if unframed)
  7173.  27h    BYTE    window height (physical, including frame)
  7174.  28h    BYTE    window width (physical, including frame)
  7175.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  7176.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  7177.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  7178.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  7179.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  7180.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  7181.         unzoomed parameters above are updated when window is zoomed
  7182.           to full screen
  7183.  2Fh    BYTE    ??? initially logical window height
  7184.  30h    BYTE    ??? initially logical window width
  7185.  31h  2 BYTEs    ???
  7186.  33h    BYTE    minimum height of window
  7187.  34h    BYTE    minimum width of window
  7188.  35h    BYTE    maximum height of window
  7189.  36h    BYTE    maximum width of window
  7190.  37h  3 BYTEs    ???
  7191.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  7192.  42h 24 BYTEs    attributes???
  7193.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  7194.  62h  3 BYTEs    ???
  7195.  65h    BYTE    ??? bitflags
  7196.  66h    BYTE    bit 0: window is zoomed
  7197.  67h    BYTE    ???
  7198.  68h    WORD    offset in common memory of window name or 0000h if untitled
  7199.  6Ah    WORD    length of window name
  7200.  6Ch  2 BYTEs    ???
  7201.  6Eh    WORD    offset of logical cursor in window (in character cells)
  7202.  70h    DWORD    pointer to field table for window
  7203.  74h    BYTE    ???
  7204.  75h  2 BYTEs    ???
  7205.  77h    BYTE    number of last-visited field
  7206.  78h    DWORD    pointer to field table entry for last-visited field
  7207.  7Ch  3 BYTEs    ???
  7208.  7Fh    BYTE    select field marker character
  7209.  80h    BYTE    ??? bit flags
  7210.         bit 0: allow ECh window stream opcode to change reverse logattr
  7211.         bit 1: alternate field processing mode selected
  7212.  81h    BYTE    ???
  7213.  82h    DWORD    notification function (manager stream opcode 8Ah)
  7214.         no notification if segment = 0000h
  7215.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  7216.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  7217.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  7218.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  7219.  90h    BYTE    ??? bitflags
  7220.  91h    BYTE    ???
  7221.  ---task object only
  7222.  92h    BYTE    bit flags (bits 0-4)
  7223.  93h    BYTE    character for ??? (default 20h)
  7224.  94h    BYTE    ??? flag
  7225.  95h    WORD    offset in common memory of ???
  7226.  97h  2 BYTEs    ???
  7227.  99h    WORD    ???
  7228.  9Bh    BYTE    ??? bit flags
  7229.         bit 3: ???
  7230.         bit 6: perform protected-attribute processing on select fields
  7231.  9Ch    BYTE    ???
  7232.  9Dh    WORD    offset in common memory of current register save record
  7233.           (see #0319).    No register save record in use if < 01C0h
  7234.  9Fh    WORD    offset in common memory of task's keyboard object
  7235.  A1h    WORD    offset in common memory of task's OBJECTQ object
  7236.  A3h    WORD    offset in common memory of task's mailbox object
  7237.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  7238.  A7h    DWORD    user's SS:SP
  7239.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  7240.  ADh  6 BYTEs    ???
  7241.  B3h    BYTE    ??? bit flags
  7242.         bit 0: run in foreground only
  7243.  B4h    BYTE    ???
  7244.  B5h    BYTE    ??? bitflags
  7245.  B6h    BYTE    task status (see #0455 at AX=DE2Ch)
  7246.  B7h  9 BYTEs    ???
  7247.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  7248.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  7249.  C4h  2 BYTEs    ??? (0000h)
  7250.  C6h    WORD    segment of keyboard buffer for task
  7251.  C8h    WORD    offset in common memory of ??? keyboard object
  7252.  CAh    BYTE    ???
  7253. ---v2.22-2.42
  7254.  CBh    WORD    offset in common memory of ??? object
  7255.  CEh    BYTE    ??? flag
  7256.  CFh    WORD    offset in common memory of default notify window for task
  7257.           or 0000h if none
  7258.  D1h  4 BYTEs    ???
  7259.  D5h    BYTE    window number on Switch Window menu
  7260.  D6h  5 BYTEs    ???
  7261.  DBh    WORD    offset in common memory of ??? object
  7262.  DDh  2 BYTEs    ???
  7263.  DFh    WORD    API level for task
  7264.  E1h    WORD    offset in common memory of object task is waiting on if task
  7265.           status is 'waiting', else 0000h
  7266.  E7h    WORD    segment of ???
  7267.  E9h 4    BYTEs    ???
  7268.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  7269.  F1h 12 BYTEs    ???
  7270.  FBh    WORD    ???
  7271.  FDh    BYTE    ???
  7272.  FFh 12 BYTEs    ???
  7273. 10Bh    DWORD    pointer to process record (see #0322,#0323)
  7274. 10Dh 10 BYTEs    ???
  7275. 119h    DWORD    SS:SP for ???
  7276. 11Dh  4 BYTEs    ???
  7277. 121h    DWORD    pointer to ???
  7278. 125h 25 BYTEs    ???
  7279. 13Eh    DWORD    pointer to ??? in system memory
  7280. ---v2.22
  7281. 142h  3 BYTEs    ???
  7282. 145h        task's default keyboard object
  7283. ---v2.42
  7284. 142h    DWORD    pointer to first task instance data record in system memory
  7285. 148h    DWORD    pointer to last task instance data record in system memory
  7286.         (see #0324)
  7287. 14Ah    BYTE    ???
  7288. 14Dh 42 BYTEs    task's default keyboard object
  7289. 177h 32 BYTEs    task's ObjectQ object
  7290. 197h 41 BYTEs    task's default mailbox object
  7291. 1C0h 24 BYTEs    first register save record
  7292. 450h    --    default top of private stack
  7293. ---v2.52 (probably all DV/X)
  7294. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  7295.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  7296.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  7297.   0000h even when waiting.
  7298. ---v2.60
  7299.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  7300.  CDh    WORD    offset in common memory of ??? object
  7301.  D0h    BYTE    ??? flag
  7302.  D1h    WORD    offset in common memory of default notify window for task
  7303.           or 0000h if none
  7304.  D3h  4 BYTEs    ???
  7305.  D7h    BYTE    window number on Switch Window menu
  7306.  D8h  5 BYTEs    ???
  7307.  DDh    WORD    offset in common memory of ??? object
  7308.  DFh  2 BYTEs    ???
  7309.  E1h    WORD    API level for task
  7310.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  7311.           that task is waiting on, else 0000h. (Task with CPU also
  7312.           has 0000h here)
  7313.  E9h    WORD    segment of ???
  7314.  EBh 4    BYTEs    ???
  7315.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  7316.  F3h 12 BYTEs    ???
  7317.  FDh    WORD    ???
  7318.  FFh    BYTE    ???
  7319. 101h  8 BYTEs    ???
  7320. 109h    DWORD    pointer to process record in system memory
  7321. 10Dh 14 BYTEs  ???
  7322. 11Bh    DWORD    SS:SP for ???
  7323. 11Fh  4 BYTEs    ???
  7324. 123h    DWORD    pointer to ???
  7325. 127h 25 BYTEs    ???
  7326. 140h    DWORD    pointer to ??? in system memory
  7327. 144h    DWORD    pointer to first task instance data record in system memory
  7328. 148h    DWORD    pointer to last task instance data record in system memory
  7329.         (from INT 15/AX=DE27h) (see #0324)
  7330. 14Ch    BYTE    ???
  7331. 14Eh 42 BYTEs    task's default keyboard object
  7332. 179h 32 BYTEs    task's ObjectQ object
  7333. 199h 41 BYTEs    task's default mailbox object
  7334. 1C2h 24 BYTEs    first register save record
  7335. 452h    --    default top of private stack
  7336.  
  7337. Format of DESQview Register Save Record:
  7338. Offset    Size    Description    (Table 0319)
  7339.  00h    WORD    AX
  7340.  02h    WORD    BX
  7341.  04h    WORD    CX
  7342.  06h    WORD    DX
  7343.  08h    WORD    DI
  7344.  0Ah    WORD    SI
  7345.  0Eh    WORD    DS
  7346.  10h    WORD    ES
  7347.  12h    DWORD    return address
  7348.  16h    WORD    original flags
  7349.  
  7350. Format of DESQview mapping context record:
  7351. Offset    Size    Description    (Table 0320)
  7352.  00h    WORD    lowest segment in process's memory
  7353.         (often start of system memory chain)
  7354.  02h    WORD    size of process's memory in paragraphs
  7355.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  7356.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  7357.  06h  2 BYTEs    ???
  7358.  08h    WORD    EMS handle if in EMS, else 0
  7359.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  7360.  0Ch    WORD    segment of system memory block that contains process record,
  7361.           referenced from segment of start of system memory chain
  7362.  0Eh    BYTE    ???
  7363.  0Fh    WORD    size of system memory block that contains process record
  7364.           and DOS memory in paragraphs
  7365.  11h    BYTE    bit flags
  7366.         Bit 0: Swapped out???
  7367.         Bit 1: ???
  7368.         Bit 2: Swapped out???
  7369.  12h    BYTE    ???
  7370.  13h    BYTE    reference count
  7371.  ---v2.31
  7372.  14h 10 BYTEs    ???
  7373.  1Eh    WORD    segment of process record
  7374.  20h  2 BYTEs    ???
  7375.  22h    WORD    segment of ???    (in first free system memory block???)
  7376.  24h    WORD    segment of end of system memory chain
  7377.  26h    WORD    segment of start of system memory chain
  7378.  28h  8 BYTEs    ???
  7379.  2Ah    DWORD    pointer to ??? (process record???)
  7380.  2Dh 10 BYTEs    ???
  7381.  37h    BYTE    lowest interrupt vector to save on context switch
  7382.  38h    BYTE    highest interrupt vector to save on context switch
  7383.  39h    WORD    offset in common memory of main task with this context
  7384.  3Ah 12 BYTEs    ???
  7385.  46h    BYTE    internal mapping context number
  7386.  47h 12 BYTEs    ???
  7387.  ---v2.5x-2.60
  7388.  14h  6 BYTEs    ???
  7389.  1Ah    WORD    segment of process record
  7390.  1Ch  2 BYTEs    ???
  7391.  1Eh    WORD    segment of first free system memory block
  7392.  20h    WORD    segment of start of system memory chain
  7393.  22h    WORD    segment of end of system memory chain
  7394.  24h 8    BYTEs    ???
  7395.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  7396.  30h 3    BYTEs    ???
  7397.  33h    WORD    Offset in common memory of main task with this context
  7398.  35h 7    BYTEs    ???
  7399.  3Ch    BYTE    internal mapping context number
  7400.  3Dh 14 BYTEs    ???
  7401.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  7402.  4Dh    BYTE    ??? (flag???)
  7403.  ---v2.53 (2.5x???)
  7404.  4Eh 12 BYTEs    ???
  7405.  ---v2.60
  7406.  4Eh    WORD    segment of script buffer (see #0325)
  7407.  50h  6 BYTEs    ???
  7408.  
  7409. Format of DESQview Internal Window Record (v2.31-2.60):
  7410. Offset    Size    Description    (Table 0321)
  7411.  00h    BYTE    internal window number???
  7412.  01h    BYTE    display page???
  7413.  02h    BYTE    video mode
  7414.  03h  3 BYTEs    ???
  7415.  06h    BYTE    logical window height
  7416.  07h    BYTE    logical window width
  7417.  08h    DWORD    pointer to text video buffer
  7418.  0Ch 116 BYTEs    ???
  7419.  
  7420. Format of DESQview process record (v2.31):
  7421. Offset    Size    Description    (Table 0322)
  7422. -470h 13 BYTEs    filename of ??? Script
  7423. -463h 1117 BYTEs ??? (script buffer???)
  7424.  -6h  6 BYTEs    ???
  7425.  00h    WORD    segment of parent PSP in process
  7426.  02h  5 BYTEs    ???
  7427.  07h    WORD    segment of current PSP in process
  7428.  09h    WORD    segment of first MCB in process
  7429.  0Bh 13 BYTEs    ???
  7430.  18h 1024 BYTEs process's interrupt vector table
  7431. 418h 376 BYTEs    ???
  7432. 590h        first MCB in process
  7433. SeeAlso: #0323
  7434.  
  7435. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  7436. Offset    Size    Description    (Table 0323)
  7437.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  7438.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  7439. 11Ch    WORD    segment of parent PSP in process
  7440. 11Eh  4 BYTEs    ???
  7441. 122h    WORD    segment of current PSP
  7442. 124h    WORD    segment of current PSP
  7443. 126h    WORD    segment of first MCB in process
  7444. 128h  4 BYTEs    ???
  7445. 12Ch    DWORD    pointer to first process instance data record in system memory
  7446. 130h    DWORD    pointer to last process instance data record in system memory
  7447.         (from INT 15/AX=DE27h) (see #0324)
  7448. 134h  8 BYTEs    ???
  7449. 13Ch    WORD    size of current environment
  7450. 13Eh    WORD    segment of current environment
  7451. 140h    WORD    segment of current PSP
  7452. 142h    DWORD    entry point of current program
  7453. 146h 10 BYTEs    ???
  7454. ---v2.52 (v2.5x???)
  7455. 150h    BYTE    ???
  7456. 151h    WORD    segment of parent PSP in process
  7457. 153h    WORD    ???
  7458. 155h    WORD    ???
  7459. 157h    WORD    ???
  7460. 159h  4 BYTEs    ???
  7461. 15Dh    WORD    segment of current environment
  7462. 15Fh    WORD    segment of current PSP
  7463. 161h    WORD    segment of ???
  7464. 162h    WORD    ???
  7465. 164h  3 BYTEs    ???
  7466. 168h 1024 BYTEs process's interrupt vector table
  7467. 568h 120 BYTEs    ???
  7468. 5E0h        first MCB in process
  7469. ---v2.60
  7470. 150h    WORD    segment of parent PSP in process
  7471. 152h    WORD    ???
  7472. 154h    WORD    ???
  7473. 156h    WORD    ???
  7474. 158h  4 BYTEs    ???
  7475. 15Ch    WORD    segment of current environment
  7476. 15Eh    WORD    segment of current PSP
  7477. 160h    WORD    segment of ???
  7478. 162h    WORD    ???
  7479. 164h 1024 BYTEs process's interrupt vector table
  7480. 564h 108 BYTEs    ???
  7481. 5D0h        first MCB in process
  7482. SeeAlso: #0322
  7483.  
  7484. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  7485. Offset    Size    Description    (Table 0324)
  7486.  00h    DWORD    pointer to next record of same type or 00000000
  7487.  04h    DWORD    pointer to previous record of same type or 00000000
  7488.  08h    DWORD    pointer to source area of memory during restore state
  7489.  0Ch    WORD    number of bytes to save/restore
  7490.  0Eh    DWORD    pointer to destination area of memory during restore state
  7491.  12h    WORD    ??? (0)
  7492.  14h  N BYTEs    source memory buffer during restore state
  7493.  
  7494. Format of DESQview script buffer (v2.60):
  7495. Offset    Size    Description    (Table 0325)
  7496.  00h 13 BYTEs    ASCIZ Script filename
  7497.  0Dh 80 BYTEs    ???
  7498.  5Eh  N BYTEs    script records (see #0326)
  7499.  
  7500. Format of one DESQview script record (v2.60):
  7501. Offset    Size    Description    (Table 0326)
  7502.  00h    BYTE    signature 12h
  7503.  01h 18 BYTEs    blank-padded script name
  7504.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  7505.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  7506.  15h    BYTE    ???
  7507.  16h    WORD    size of script in bytes
  7508.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  7509.           scan code of non-ASCII key)
  7510. SeeAlso: #0325
  7511.  
  7512. Format of DESQview Common Memory Header (v2.31-2.60):
  7513. Offset    Size    Description    (Table 0327)
  7514.  00h    WORD    offset of lowest used block
  7515.  02h    WORD    bytes of commom memory, including header
  7516.  04h    WORD    offset of first free block
  7517.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  7518. Note:    the above is located at the beginning of the commom memory segment
  7519. SeeAlso: #0328,#0329,#0337
  7520.  
  7521. Format of DESQview Free block header:
  7522. Offset    Size    Description    (Table 0328)
  7523.  00h    WORD    size of block in bytes including header
  7524.  02h    WORD    offset of next free block
  7525.  04h  N BYTEs    free block
  7526. SeeAlso: #0327,#0329
  7527.  
  7528. Format of DESQview Used block header:
  7529. Offset    Size    Description    (Table 0329)
  7530.  00h    WORD    size of block in bytes including header
  7531.  02h  N BYTEs    used block
  7532. SeeAlso: #0327,#0328
  7533. --------Q-151017-----------------------------
  7534. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  7535.     AX = 1017h
  7536. Return: pops up "Programming error" window in DV 2.x
  7537. --------Q-151018-----------------------------
  7538. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  7539.     AX = 1018h
  7540.     BH = column
  7541.     BL = row
  7542.     ES = segment of object handle for window below which to search
  7543.          0000h = start search with topmost window
  7544. Return: ES = segment of object handle for window which is visible at the
  7545.            indicated position, or covered by indicated window
  7546.         0000h if no window
  7547. SeeAlso: AX=1023h,AX=1024h
  7548. --------Q-151019-----------------------------
  7549. INT 15 - TopView - "SOUND" - MAKE TONE
  7550.     AX = 1019h
  7551.     BX = frequency in Hertz (0000h = silence)
  7552.     CX = duration in clock ticks (18.2 ticks/sec)
  7553. Return: immediately, tone continues to completion
  7554. Notes:    if another tone is already playing, the new tone does not start until
  7555.       completion of the previous one.  Up to 32 tones may be queued before
  7556.       the process is blocked until a note completes.
  7557.     in DV 2.00, the lowest tone allowed is 20 Hz
  7558.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  7559.       notes are also cancelled
  7560. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  7561. --------Q-15101A-----------------------------
  7562. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  7563.     AX = 101Ah
  7564. Return: stack switched
  7565. Notes:    this call may not be nested; a second call must be preceded by a call
  7566.       to "USTACK" (AX=1025h)
  7567.     while TopView requires many API calls to be executed while on the
  7568.       task's internal stack, DESQview allows those calls to be executed
  7569.       regardless of the current stack
  7570. SeeAlso: AX=1025h
  7571. --------Q-15101B-----------------------------
  7572. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  7573.     AX = 101Bh
  7574. Return: task-switching temporarily disabled
  7575. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  7576.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  7577.       will again be disabled)
  7578.     suspends the caller until DOS is free
  7579. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  7580. SeeAlso: INT 60/DI=0602h
  7581. --------Q-15101C-----------------------------
  7582. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  7583.     AX = 101Ch
  7584. Return: task-switching enabled
  7585. Note:    this API call may be made from within a hardware interrupt handler
  7586. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  7587. --------Q-15101D-----------------------------
  7588. INT 15 - TopView - "STOP" - STOP TASK
  7589.     AX = 101Dh
  7590.     ES = segment of object handle for task to be stopped
  7591.          (== handle of main window for that task)
  7592. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  7593. Note:    once a task has been stopped, additional "STOP"s are ignored
  7594. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  7595.       current task
  7596. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  7597. --------Q-15101E-----------------------------
  7598. INT 15 - TopView - "START" - START TASK
  7599.     AX = 101Eh
  7600.     ES = segment of object handle for task to be started
  7601.          (== handle of main window for that task)
  7602. Return: indicated task is started up again
  7603. Note:    once a task has been started, additional "START"s are ignored
  7604. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  7605. --------Q-15101F-----------------------------
  7606. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  7607.     AX = 101Fh
  7608.     BX = bit fields
  7609.          bits 0-12: number of characters to display
  7610.          bits 13,14: which mouse button may be pressed to remove window
  7611.              00 = either
  7612.              01 = left
  7613.              10 = right
  7614.              11 = either
  7615.          bit 15: beep if 1
  7616.     ES:DI -> text of message
  7617.     CH = width of error window (0 = default)
  7618.     CL = height of error window (0 = default)
  7619.     DX = segment of object handle
  7620. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  7621. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  7622. --------Q-151020-----------------------------
  7623. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  7624.     AX = 1020h
  7625. Return: pops up "Programming error" window in DV v2.00+
  7626. --------Q-151021-----------------------------
  7627. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  7628.     AX = 1021h
  7629.     BX = segment of object handle for task to interrupt (not self)
  7630.     DX:CX -> FAR routine to jump to next time task is run
  7631. Return: nothing
  7632. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  7633.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  7634.       needs to be preserved
  7635.     multiple PGMINTs to a single task are processed last-in first-out
  7636.     if the other task is in a DOS or DV API call, the interruption will
  7637.       occur on return from that call
  7638. --------Q-151022BX0000-----------------------
  7639. INT 15 - TopView - "GETVER" - GET VERSION
  7640.     AX = 1022h
  7641.     BX = 0000h
  7642. Return: BX nonzero, TopView or compatible loaded
  7643.     (BL = major version, BH = minor version)
  7644. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  7645. --------Q-151023-----------------------------
  7646. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  7647.     AX = 1023h
  7648.     BX = segment of object handle for parent window within which to
  7649.            position the window (0 = full screen)
  7650.     ES = segment of object handle for window to be positioned
  7651.     DL = general window position (see #0330)
  7652.     CH = number of columns to offset from position specified by DL
  7653.     CL = number of rows to offset from position specified by DL
  7654. Return: nothing
  7655.  
  7656. Bitfields for TopView general window position:
  7657. Bit(s)    Description    (Table 0330)
  7658.  0,1    horizontal position
  7659.     00 = current, 01 = center, 10 = left, 11 = right
  7660.  2,3    vertical position
  7661.     00 = current, 01 = center, 10 = top, 11 = bottom
  7662.  4    don't redraw screen if set
  7663.  5-7    not used
  7664. --------Q-151024-----------------------------
  7665. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  7666.     AX = 1024h
  7667.     BX = segment of object handle for window
  7668.           (0 = use default)
  7669. Return: ES:DI -> virtual screen
  7670.     CX = size of virtual screen in bytes
  7671.     DL = 00h text screen
  7672.          01h graphics screen
  7673. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  7674. --------Q-151025-----------------------------
  7675. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  7676.     AX = 1025h
  7677. Return: stack switched back
  7678. Notes:    call only after having switched to internal stack with AX=101Ah
  7679.     while TopView requires many API calls to be executed while on the
  7680.       task's private stack, DESQview allows those calls to be executed
  7681.       regardless of the current stack
  7682. SeeAlso: AX=101Ah
  7683. --------Q-1510-------------------------------
  7684. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  7685.     AH = 10h
  7686.     AL = 26h thru 2Ah
  7687. Return: pops up "Programming error" window in DV 2.x
  7688. --------Q-15102B-----------------------------
  7689. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  7690.     AX = 102Bh
  7691.     BX = segment of object handle for task
  7692. Return: nothing
  7693. Note:    forces a task which is waiting on its objectq to continue by placing
  7694.       the handle for the task on the objectq
  7695. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  7696. --------Q-15102C-----------------------------
  7697. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  7698.     AX = 102Ch
  7699.     ES:DI -> contents of .PIF/.DVP file (see #0331)
  7700.     BX = size of .PIF/.DVP info
  7701. Return: BX = segment of object handle for new task
  7702.          0000h on error
  7703. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  7704.  
  7705. Format of .PIF/.DVP file:
  7706. Offset    Size    Description    (Table 0331)
  7707.  00h    BYTE    reserved (0)
  7708.  01h    BYTE    checksum of bytes 02h through 170h
  7709.  02h 30 BYTEs    blank-padded program title
  7710.  20h    WORD    maximum memory to allocate to partition in KB
  7711.  22h    WORD    minimum memory required in KB
  7712.  24h 64 BYTEs    ASCIZ program pathname
  7713.  64h    BYTE    default drive letter ('A',...)
  7714.  65h 64 BYTEs    ASCIZ default directory name
  7715.  A5h 64 BYTEs    ASCIZ program parameters
  7716.  E5h    BYTE    initial screen mode (0-7) (also see offset 189h)
  7717.  E6h    BYTE    number of text pages used
  7718.  E7h    BYTE    number of first interrupt to save
  7719.  E8h    BYTE    number of last interrupt to save
  7720.  E9h    BYTE    rows in virtual screen buffer
  7721.  EAh    BYTE    columns in virtual screen buffer
  7722.  EBh    BYTE    initial window position, row
  7723.  ECh    BYTE    initial window position, column
  7724.  EDh    WORD    system memory in KB
  7725.  EFh 64 BYTEs    ASCIZ shared program name
  7726. 12Fh 64 BYTEs    ASCIZ shared program data file
  7727. 16Fh    BYTE    program flags 1 (see #0332)
  7728. 170h    BYTE    flags2
  7729.         bit 6: uses command-line parameters in field at A5h
  7730.         bit 5: swaps interrupt vectors
  7731. ---information unique to .DVP files---
  7732. 171h  2 BYTEs    keys to use on open menu
  7733. 173h    WORD    size of script buffer in bytes
  7734. 175h    WORD    automatically give up CPU after this many tests for keyboard
  7735.           input in one clock tick (default 0 = never)
  7736. 177h    BYTE    nonzero = "uses own colors"
  7737. 178h    BYTE    nonzero if application swappable
  7738. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  7739.         in actual .DVP files, frequently 01h
  7740. 17Ch    BYTE    nonzero to automatically close on exit (see also #0334)
  7741. 17Dh    BYTE    nonzero if copy-protect floppy is required
  7742. ---information unique to DESQview 2.0+---
  7743. 17Eh    BYTE    .DVP version number
  7744.         00h DESQview v1.2+
  7745.         01h DESQview v2.0+
  7746.         02h DESQview v2.2+
  7747. 17Fh    BYTE    reserved (0)
  7748. 180h    BYTE    initial number of rows in physical window
  7749. 181h    BYTE    initial number of columns in physical window
  7750. 182h    WORD    maximum expanded memory to allow, in KB
  7751. 184h    BYTE    DVP program flags 3 (see #0333)
  7752. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  7753.         (see #0335)
  7754. 186h    BYTE    number of graphics pages used
  7755. 187h    WORD    extra system memory size
  7756. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  7757. ---information unique to DESQview 2.2+---
  7758. 18Ah    BYTE    serial port usage
  7759.         FFh uses all serial ports
  7760.         00h no serial ports
  7761.         01h only COM1
  7762.         02h only COM2
  7763. 18Bh    BYTE    DVP program flags 4 (see #0334)
  7764. 18Ch    BYTE    protection level for 386 machines
  7765. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  7766. ---information unique to DESQview/X 1.0---
  7767. 18Dh    BYTE    X flags
  7768.         bits 3-7: unused (0)
  7769.         bit 2: don't display wait message when opening window
  7770.         bit 1: don't display DOS window
  7771.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  7772.                (NEWPROC) inherit DOS client layer usage
  7773. 18Eh    BYTE    X keyboard behavior (0-3)
  7774. 18Fh    BYTE    font scaling
  7775.         00h fixed fonts
  7776.         01h scalable fonts
  7777. 190h 10 BYTEs    reserved (0)
  7778. 19Ah    WORD    length of data follownig XDVP signature
  7779. 19Ch  4 BYTEs    signature "XDVP"
  7780. 1A0h  N BYTEs    list of variable length records (see #0336)
  7781.  
  7782. Bitfields for .PIF/.DVP program flags 1:
  7783. Bit(s)    Description    (Table 0332)
  7784.  7    writes text directly to screen
  7785.  6    runs in foreground only (see also #0331 offset 184h)
  7786.  5    uses math coprocessor
  7787.  4    accesses system keyboard buffer directly
  7788.  3-1    reserved (0)
  7789.  0    swappable
  7790. SeeAlso: #0331,#0333,#0334
  7791.  
  7792. Bitfields for .DVP program flags 3:
  7793. Bit(s)    Description    (Table 0333)
  7794.  7    automatically assign window position
  7795.  5    maximum memory value has been specified
  7796.  4    disallow "Close" command
  7797.  3    foreground-only when doing graphics
  7798.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  7799.  2    don't virtualize (see also #0334)
  7800.  1    foreground-only during DOS calls
  7801.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  7802. SeeAlso: #0331,#0332,#0334
  7803.  
  7804. Bitfields for .DVP program flags 4:
  7805. Bit(s)    Description    (Table 0334)
  7806.  7    automatically close application on exit if .COM or .EXE    specified
  7807.     (see also #0331 offset 17Ch)
  7808.  6    swappable if not using serial ports
  7809.  5    start program with window hidden (v2.26+)
  7810.  4    start program in background (v2.26+)
  7811.  3    virtualize text (see also #0333)
  7812.  2    virtualize graphics (see also #0333)
  7813.  1    share CPU when foreground
  7814.  0    share EGA when foreground and zoomed
  7815. SeeAlso: #0331,#0332,#0333
  7816.  
  7817. Bitfields for DESQview keyboard conflict level:
  7818. Bit(s)    Description    (Table 0335)
  7819.  3    save/restore entire INT 09 handler state every taskswtch
  7820.  2    take special precautions for programs which read the BIOS keyboard
  7821.       buffer directly from memory
  7822.  1    never indicate keystroke available during scripts/xfers
  7823.  0    only indicate keystroke available every sixth poll
  7824. SeeAlso: #0331
  7825.  
  7826. Format of DESQview/X variable length record:
  7827. Offset    Size    Description    (Table 0336)
  7828.  00h    WORD    length of following record, 0000h if end of record list
  7829.  02h    BYTE    record type
  7830.         01h script filename, up to 64 characters
  7831.         02h command-line parameters (allows >64 characters on cmdline)
  7832.         03h environment inheritance
  7833.         04h environment string
  7834.         05h starting window position
  7835. ---types 01h,02h,04h---
  7836.  03h  N BYTEs    ASCII data
  7837. ---type 03h---
  7838.  03h    BYTE    inheritance
  7839.         00h do not inherit
  7840.         01h inherit environment
  7841. ---type 05h---
  7842.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  7843.         starting row, starting column, starting height, starting width
  7844. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  7845.       only the last instance of each type is used; multiple occurrences of
  7846.       type 04h are concatenated
  7847. SeeAlso: #0331
  7848. --------Q-15102D-----------------------------
  7849. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  7850.     AX = 102Dh
  7851.     BL = subfunction
  7852.          00h determine whether using keyboard mouse
  7853.         Return: BL = 00h using real mouse
  7854.                  01h using keyboard mouse
  7855.          01h turn keyboard mouse on
  7856.          02h turn keyboard mouse off
  7857. --------Q-15102E-----------------------------
  7858. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  7859.     AX = 102Eh
  7860.     BX = number of bytes
  7861. Return: AX = status
  7862.         0000h successful
  7863.         ES:DI -> allocated system memory (see #0337)
  7864.         0001h failed
  7865.         ES:DI = 0000h:0000h
  7866. Note:    under DV 2.42, this call is identical to AX=1001h
  7867. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  7868.  
  7869. Format of DESQview system memory block header:
  7870. Offset    Size    Description    (Table 0337)
  7871.  00h    WORD    segment of next header or 0000h
  7872.  02h    WORD    segment of previous header or 0000h
  7873.  04h    WORD    size of block in paragraphs, including header
  7874.  06h    BYTE    availability flag (00h in use, 01h free)
  7875. Note:    this header is located one paragraph before the memory block proper
  7876. SeeAlso: #0327
  7877. --------Q-1511-------------------------------
  7878. INT 15 - TopView commands
  7879.     AH = 11h
  7880.     AL = various (except 17h)
  7881. Return: varies by function
  7882. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  7883.       see those below
  7884. SeeAlso: AX=DE00h,AX=DE22h,AX=DE30h
  7885. --------T-1511-------------------------------
  7886. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  7887.     AH = 11h
  7888.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  7889.             request (max len = 127)
  7890. Return: AX = status (SYS_OK or SYS_ERROR)
  7891. SeeAlso: AH=0Ch"VMiX"
  7892. --------T-1511-------------------------------
  7893. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  7894.     AH = 11h
  7895. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  7896. SeeAlso: AH=12h"MultiDOS"
  7897. Index:    hotkeys;MultiDOS Plus
  7898. --------Q-151117BX0000-----------------------
  7899. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  7900.     AX = 1117h
  7901.     BX = 0000h    get current mapping context without setting
  7902.          nonzero    set new mapping context
  7903. Return: BX = mapping context in effect before call
  7904.     interrupts enabled
  7905. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  7906.     mapping contexts determine conventional-memory addressability; setting
  7907.       a mapping context ensures that the associated program and data areas
  7908.       are in memory for access.  Usable by drivers, TSRs and shared
  7909.       programs.
  7910.     caller need not be running under DESQview, but must ensure that the
  7911.       stack in use will not be mapped out by the call
  7912. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  7913. --------m-1511DE-----------------------------
  7914. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  7915.     AX = 11DEh
  7916. Return: CF clear if installed
  7917.         AX = segment at which QEXT.SYS is located
  7918. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  7919.       versions also implement the XMS standard
  7920. Note:    a private entry point (see #0338) may be found by searching the
  7921.       beginning of the returned segment for the signature string
  7922.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  7923.       prior to the signature contains the QEXT version number in BCD,
  7924.       and the word prior to that contains the offset within the QEXT
  7925.       code segment of the private entry point
  7926. SeeAlso: INT 2F/AX=4310h"XMS",INT 67/AH=3Fh
  7927.  
  7928. (Table 0338)
  7929. Call QEXT.SYS private entry point with:
  7930.     AH = 00h ???
  7931.     AH = nonzero ???
  7932. --------T-1512-------------------------------
  7933. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  7934.     AH = 12h
  7935.     STACK:    WORD    process ID
  7936. Return: AX = status (SYS_OK or SYS_ERROR)
  7937. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  7938. --------T-1512-------------------------------
  7939. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  7940.     AH = 12h
  7941. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  7942. SeeAlso: AH=11h"MultiDOS"
  7943. Index:    hotkeys;MultiDOS Plus
  7944. --------Q-1512--BH00-------------------------
  7945. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  7946.     AH = 12h
  7947.     BH = 00h
  7948.     BL = which handle to return
  7949.         00h handle in DWORD on top of stack
  7950.         01h current task's window handle
  7951.         02h given task's mailbox handle (task's handle on stack)
  7952.         03h current task's mailbox handle
  7953.         04h given task's keyboard handle (task's handle on stack)
  7954.         05h current task's keyboard object handle
  7955.         06h given task's OBJECTQ handle (task's handle on stack)
  7956.         07h current task's OBJECTQ handle
  7957.         08h      \
  7958.           thru > return 0000:0000 under DV < 2.26
  7959.         10h      /
  7960.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  7961.         0Dh (2.26+) task handle of owner (parent) of current task
  7962. Return: DWORD on top of stack is object handle
  7963. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  7964.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  7965.       window)
  7966. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  7967. --------Q-1512--BH01-------------------------
  7968. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  7969.     AH = 12h
  7970.     BH = 01h
  7971.     BL = object type to create (see #0339)
  7972.     STACK: (only if window object or WINDOW class)
  7973.            DWORD address to jump to (no new task if high word == 0)
  7974.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  7975.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  7976.            DWORD bytes system memory for input buffer for READ/READN
  7977.             (0 == none, -1 == default--same as logical window size)
  7978.            DWORD window size, columns
  7979.            DWORD window size, rows
  7980.            DWORD length of window title
  7981.            DWORD address of window title
  7982. Return: DWORD on top of stack is new object handle
  7983. Notes:    if a new task is created, it is started with
  7984.       AX = BX = SI = DI = BP = 0
  7985.       DX:CX = handle of parent task
  7986.       DS = ES = SS = segment of private stack (and new task's handle)
  7987.     new windows are orphans, inherit the colors/hidden status of the
  7988.       creating task's window, and are placed in the upper left hand corner
  7989.       of the screen but not automatically redrawn
  7990.     new keyboards are closed, and have all object bits cleared except for
  7991.       the hardware cursor bit
  7992. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  7993.  
  7994. (Table 0339)
  7995. Values for TopView/DESQview object type (for creation):
  7996.  00h    (DV 2.0x only) handle is DWORD on top of stack
  7997.  01h    (DV 2.0x only) use task's window handle
  7998.  02h    (DV 2.0x only) given task's mailbox (task's handle on stack)
  7999.  03h    (DV 2.0x only) current task's mailbox
  8000.  04h    (DV 2.0x only) given task's keyboard (task's handle on stack)
  8001.  05h    (DV 2.0x only) current task's keyboard object
  8002.  08h    WINDOW class
  8003.  09h    MAILBOX class
  8004.  0Ah    KEYBOARD class
  8005.  0Bh    TIMER object (counts down 32-bit time in 10ms increments)
  8006.  0Fh    POINTER object
  8007.  10h    PANEL object
  8008. --------Q-1512--BH02-------------------------
  8009. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  8010.     AH = 12h
  8011.     BH = 02h
  8012.     BL = object
  8013.         00h handle in DWORD on top of stack
  8014.         window: close window and free
  8015.         timer: free timer
  8016.         panel: free panel object
  8017.         pointer: free pointer
  8018.         01h task's window handle - kills task, never returns
  8019.         02h given task's mailbox (task's handle on top of stack)
  8020.         03h current task's mailbox
  8021.         04h given task's keyboard (task's handle on top of stack)
  8022.         05h current task's keyboard object
  8023. Return: STACK popped if handle passed on stack
  8024. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  8025.       task windows also free any mailbox, objectq, and panel objects held
  8026.       by the task and any child tasks
  8027.     if the keyboard being freed is the default keyboard for a task, this
  8028.       call is equivalent to CLOSE
  8029.     panel and pointer objects are automatically closed if open
  8030. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  8031. --------Q-1512--BH03-------------------------
  8032. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  8033.     AH = 12h
  8034.     BH = 03h
  8035.     BL = object
  8036.         00h mailbox handle in DWORD on top of stack
  8037.         02h sender of last msg read from mailbox (task's handle on stack)
  8038.         03h sender of last msg read from current task's mailbox
  8039. Return: DWORD on stack is task handle of message sender
  8040. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  8041. --------Q-1512--BH03-------------------------
  8042. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  8043.     AH = 12h
  8044.     BH = 03h
  8045.     BL = window to be connected
  8046.         00h handle of window to be attached in DWORD on top of stack
  8047.         01h attach current task's main window
  8048.     STACK: DWORD handle of window to attach to or 00000000h to detach
  8049. Return: STACK popped
  8050. Notes:    when two windows are connected, both will move if the user moves either
  8051.     multiple windows may be attached to a single window, but each window
  8052.       may only be attached to one window at a time
  8053. SeeAlso: AH=12h/BH=83h
  8054. --------Q-1512--BX0300-----------------------
  8055. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  8056.     AH = 12h
  8057.     BX = 0300h
  8058.     STACK: DWORD handle of panel object (see #0340)
  8059. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  8060.            DWORD address of directory
  8061. Note:    a null string is returned if the object is not open
  8062. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  8063.  
  8064. Format of TopView panel file:
  8065. Offset    Size    Description    (Table 0340)
  8066.  00h  2 BYTEs    C0h C3h
  8067.  02h    BYTE    number of panels in file
  8068.  03h    for each panel in file:
  8069.         8 BYTEs  blank-padded panel name
  8070.           DWORD  panel offset in file
  8071.           WORD   panel length
  8072.     data for panels (each consists of one or more window/query/manager
  8073.       streams); first byte of each panel must be 1Bh, fifth byte must be
  8074.       E5h
  8075. --------Q-1512--BH04-------------------------
  8076. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  8077.     AH = 12h
  8078.     BH = 04h
  8079.     BL = window to read from
  8080.         00h handle is DWORD on top of stack
  8081.         01h use calling task's default window
  8082.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  8083.         0Dh (DV 2.26+) default window of parent task of current task
  8084. Return: STACK:    DWORD number of bytes read
  8085.         DWORD address of buffer
  8086. Notes:    reading starts at the current logical cursor position; the cursor is
  8087.       updated to point at the character following the last one read
  8088.     any translucent blanks (FFh) which are visible on screen are changed
  8089.       to the character which is seen through them
  8090.     the string produced by the read is placed in an input buffer which may
  8091.       be reused by the next READ or READN of a window
  8092.     window stream opcodes D8h and D9h determine whether the read returns
  8093.       characters or attributes
  8094. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  8095. --------Q-1512--BH04-------------------------
  8096. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  8097.     AH = 12h
  8098.     BH = 04h
  8099.     BL = object
  8100.         00h handle is DWORD on top of stack
  8101.         mailbox: wait for and get next message
  8102.         keyboard: wait for and get pointer to next input buffer
  8103.         pointer: wait for and get next message
  8104.         02h get next message from mailbox (task's handle on top of stack)
  8105.         03h get next message from current task's mailbox
  8106.         04h get the next input from keyboard (handle on top of stack)
  8107.         05h get the next input from task's default keyboard
  8108.         06h wait for input from any object in OBJECTQ (handle on stack)
  8109.         07h wait for input from any object in task's default OBJECTQ
  8110. Return: STACK: (if objectq) DWORD handle of object with input
  8111.            (otherwise)  DWORD number of bytes
  8112.                 DWORD address of pointer message (see #0341)
  8113. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  8114.       containing the character code as returned by the BIOS; the BIOS scan
  8115.       code is available via the STATUS call if the character is zero
  8116.     for a keyboard in field mode, the input buffer format is determined
  8117.       by the field table header for the window the keyboard is attached to
  8118.     keyboard input buffers and mailbox message buffers may be invalidated
  8119.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  8120. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  8121.  
  8122. Format of DESQview pointer message:
  8123. Offset    Size    Description    (Table 0341)
  8124.  00h    WORD    row
  8125.  02h    WORD    column
  8126.  04h    BYTE    status (see #0342)
  8127.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  8128.  
  8129. Bitfields for DESQview pointer status:
  8130. Bit(s)    Description    (Table 0342)
  8131.  7-2    number of clicks-1 if multiple-click mode active
  8132.  7    set when press/release mode active and button pressed
  8133.  6    set when press/release mode active and button released
  8134.  1-0    button pressed (00=none,01=button1,10=button2)
  8135. SeeAlso: #0341
  8136. --------Q-1512--BX0400-----------------------
  8137. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  8138.     AH = 12h
  8139.     BX = 0400h
  8140.     STACK: DWORD timer's handle
  8141. Return: after timer expires
  8142.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  8143. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  8144. --------Q-1512--BX0400-----------------------
  8145. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  8146.     AH = 12h
  8147.     BX = 0400h
  8148.     STACK: DWORD handle of panel object
  8149.            DWORD window's handle (or 0 for current task's window)
  8150.            DWORD length of panel name
  8151.            DWORD pointer to panel name
  8152. Return: STACK: DWORD handle of window which was used
  8153.            DWORD handle of keyboard or 0
  8154. Notes:    status of APPLY may be checked with STATUS message
  8155.     panel MUST have the following format
  8156.       first byte must be 1Bh (i.e. must start with a stream)
  8157.       first opcode in stream must be E5h
  8158.         single byte arg of opcode is interpreted thus:
  8159.           bits 7,6    11 means create new window
  8160.             10 means create new field table for existing window
  8161.             01 means use existing window and field table
  8162.           bit 5 if set, panel contains a field table
  8163.             (creates a new keyboard and puts it in field mode)
  8164.           bit 4 if set, panel contains input fields
  8165.           bit 3 if set, panel contains select fields but no input fields
  8166.     if the panel contains input or select fields, a keyboard handle is
  8167.       returned; either the window's current open keyboard or a
  8168.       newly-created keyboard object.  The caller should read that keyboard
  8169.       to obtain input from the panel.
  8170. SeeAlso: AH=12h/BH=84h
  8171. --------Q-1512--BH05------------------------
  8172. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  8173.     AH = 12h
  8174.     BH = 05h
  8175.     BL = object
  8176.         00h handle is DWORD on top of stack
  8177.         timer: start timer to end at a specified time
  8178.         keyboard: add input buffer to queue
  8179.         pointer: move pointer icon to specified position
  8180.         02h send message by value/status=0 to mbox (task's handle on stack)
  8181.         03h send message by value/status=0 to current task's mailbox
  8182.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  8183.         05h add input buffer to task's default KEYBOARD queue
  8184.         06h add an object to OBJECTQ (handle on top of stack)
  8185.         07h add an object to task's default OBJECTQ
  8186.     STACK: (if mailbox)  DWORD length
  8187.                  DWORD address
  8188.            (if keyboard) DWORD status (scan code in keystroke mode)
  8189.                  DWORD length (should be 1 in keystroke mode)
  8190.                  DWORD address
  8191.            (if objectq)  DWORD handle of object to add
  8192.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  8193.                    only accurate to 1/18 sec)
  8194.            (if pointer)  DWORD column relative to origin of window
  8195.                  DWORD row relative to origin of window
  8196. Return: STACK popped
  8197. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  8198.     the data and status written to a keyboard object must match the format
  8199.       returned by the keyboard object in the current mode
  8200.     the pointer position is scaled according to the current scaling factors
  8201. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  8202. --------Q-1512--BH05-------------------------
  8203. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  8204.     AH = 12h
  8205.     BH = 05h
  8206.     BL = window to write to
  8207.         00h DWORD on top of stack is window handle
  8208.         01h write string to task's default window
  8209.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  8210.         0Dh (DV 2.26+) default window of parent of current task
  8211.     STACK: DWORD object handle if handle passed on stack
  8212.            DWORD total length of string (high word == 0)
  8213.            DWORD address of string to display (see #0343)
  8214. Return: indicated actions performed
  8215.     a. non-control characters are displayed (opcodes DEh and DFh control
  8216.        whether the attributes are left or changed to the current attrib)
  8217.     b. CR/LF/BS/Tab cause the usual cursor movement
  8218.     c. ESC starts a data structure with additional commands if following
  8219.        byte is less than 20h; otherwise, it is written to the window
  8220.     STACK:    DWORD handle of new window if window stream opcode E6h
  8221.         else nothing (arguments have been popped)
  8222. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  8223.  
  8224. Format of stream data structure:
  8225. Offset    Size    Description    (Table 0343)
  8226.  00h    BYTE    1Bh magic value identifying start of stream
  8227.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  8228.         (see #0344,#0350,#0351,#0352)
  8229.  02h    WORD    length of remainder of stream in bytes
  8230.     var-length fields follow, each an OPCODE followed by
  8231.          zero or more args
  8232.  
  8233. (Table 0344)
  8234. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  8235. Opcodes:args
  8236.  00h  display 20h blanks with the default attribute
  8237.  01h-1Fh display OPCODE blanks with the default attribute
  8238.  20h  display char with default attribute 20h times
  8239.     BYTE char to repeat
  8240.  21h-3Fh display char with default attribute OPCODE-20h times
  8241.     BYTE char to repeat
  8242.  40h  display 20h blanks with specified attribute
  8243.     BYTE attribute of blanks
  8244.  41h-5Fh display OPCODE-40h blanks with specified attribute
  8245.     BYTE attribute of blanks
  8246.  60h  display next 20h characters
  8247.     20h BYTEs characters to display
  8248.  61h-7Fh display next OPCODE-60h characters
  8249.     N BYTEs characters to display
  8250.  80h-87h display N blanks with default attribute
  8251.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  8252.           [000h means 800h]
  8253.  88h-8Fh display N copies of the character
  8254.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  8255.           [000h means 800h]
  8256.     BYTE character to repeat
  8257.  90h-97h display N blanks with specified attribute
  8258.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  8259.           [000h means 800h]
  8260.     BYTE attribute
  8261.  98h-9Fh display string at logical cursor pos
  8262.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  8263.           [000h means 800h]
  8264.     N BYTEs string to display
  8265.  A0h  set logical cursor row
  8266.     BYTE row number (0 is top)
  8267.  A1h  set logical cursor column
  8268.     BYTE column number (0 is leftmost)
  8269.  A2h  set top edge of scrolling region
  8270.     BYTE row
  8271.  A3h  set left edge of scrolling region
  8272.     BYTE column
  8273.  A4h  set row of physical window position
  8274.     BYTE line
  8275.  A5h  set column of physical window position
  8276.     BYTE column
  8277.  A6h  set height of physical window
  8278.     BYTE number of rows
  8279.  A7h  set width of physical window
  8280.     BYTE number of columns
  8281.  A8h  set viewport row
  8282.     BYTE row
  8283.  A9h  set viewport column
  8284.     BYTE column
  8285.  AAh  set virtual screen height [contents of window unpredictable after]
  8286.     BYTE rows
  8287.  ABh  set virtual screen width [contents of window unpredictable after]
  8288.     BYTE columns
  8289.  ACh-AEh unused
  8290.  AFh  set compatible/preferred video modes
  8291.     BYTE compatibility/preference mask
  8292.         bit 7    compatible with monochrome
  8293.         bit 6    compatible with color text, EGA/VGA graphics
  8294.         bit 5    compatible with medium-resolution CGA graphics
  8295.         bit 4    compatible with high-resolution CGA graphics
  8296.         bit 3    prefer monochrome
  8297.         bit 2    prefer color text, EGA/VGA graphics
  8298.         bit 1    prefer medium-resolution CGA graphics
  8299.         bit 0    prefer high-resolution CGA graphics
  8300.  B0h  move logical cursor down
  8301.     BYTE number of rows (signed, negative values move up)
  8302.         [if rows=0 and hardware cursor owner, update hardware cursor]
  8303.  B1h  move logical cursor right
  8304.     BYTE number of columns (signed, negative values move left)
  8305.         [if cols=0 and hardware cursor owner, update hardware cursor]
  8306.  B2h  shift top edge of scrolling region
  8307.     BYTE number of rows (signed)
  8308.  B3h  shift left edge of scrolling region
  8309.     BYTE number of columns (signed)
  8310.  B4h  shift physical window down
  8311.     BYTE number of lines (signed)
  8312.  B5h  shift physical window right
  8313.     BYTE number of columns (signed)
  8314.  B6h  expand physical window vertically
  8315.     BYTE number of lines (signed)
  8316.  B7h  expand physical window horizontally
  8317.     BYTE number of columns (signed)
  8318.  B8h  adjust viewport row
  8319.     BYTE number of rows (signed)
  8320.  B9h  adjust viewport column
  8321.     BYTE number of columns (signed)
  8322.  BAh  adjust virtual screen height [contents of window unpredict after]
  8323.     BYTE number of rows to increase (signed)
  8324.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  8325.     BYTE number of columns to increase (signed)
  8326.  BCh-BFh reserved (currently unused)
  8327.  C0h  set logical cursor position
  8328.     BYTE row number (0 is top border)
  8329.     BYTE column number (0 is left border)
  8330.  C1h  set top left corner of scrolling region
  8331.     BYTE row
  8332.     BYTE column
  8333.  C2h  set physical window pos
  8334.     BYTE upper left row (no top border if 0)
  8335.     BYTE upper left column (no left border if 0)
  8336.  C3h  set current window size
  8337.     BYTE number of rows
  8338.     BYTE number of columns
  8339.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  8340.       in window)
  8341.     BYTE row
  8342.     BYTE column
  8343.  C5h  set size of virtual screen [contents unpredictable afterwards]
  8344.     BYTE number of rows
  8345.     BYTE number of columns
  8346.  C6h  unused
  8347.  C7h  unused
  8348.  C8h  set logical cursor relative to current position
  8349.     BYTE number of rows to move down (signed)
  8350.     BYTE number of columns to move right (signed)
  8351.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  8352.  C9h  shift top left corner of scrolling region
  8353.     BYTE number of rows (signed)
  8354.     BYTE number of columns (signed)
  8355.  CAh  set window pos relative to current position
  8356.     BYTE number of rows to shift down (signed)
  8357.     BYTE number of columns to shift right (signed)
  8358.  CBh  set window size relative to current size
  8359.     BYTE number of rows to expand (signed)
  8360.     BYTE number of cols to expand (signed)
  8361.  CCh  shift viewport relative to current position
  8362.     BYTE rows to shift (signed)
  8363.     BYTE cols to shift (signed)
  8364.  CDh  resize virtual screen
  8365.     BYTE number of rows to expand (signed)
  8366.     BYTE number of columns to expand (signed)
  8367.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  8368.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  8369.  D0h  allow window frame to extend beyond screen
  8370.  D1h  always display a complete frame, even if window extends beyond edge of
  8371.       screen
  8372.  D2h  allow DV to change logical colors on video mode switch (default)
  8373.  D3h  application changes logical attributes
  8374.  D4h  window is visible [must redraw to actually make visible]
  8375.  D5h  window is hidden [must redraw to actually remove]
  8376.  D6h  window has frame (default)
  8377.  D7h  window unframed [must redraw to actually remove frame]
  8378.  D8h  READ/READN will read characters from window (default)
  8379.  D9h  READ/READN will read attributes from window
  8380.  DAh  use logical attributes, which may be remapped (see #0345)
  8381.  DBh  use physical attributes for characters
  8382.  DCh  enable special actions for control characters (default)
  8383.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  8384.       call
  8385.  DEh  write both character and attribute (default)
  8386.  DFh  write character only, leave attribute untouched
  8387.  E0h  repeat following commands through E1h opcode
  8388.     BYTE number of times to repeat (00h means 256 times)
  8389.  E1h  end of commands to repeat, start repeating them
  8390.  E2h  set current output color
  8391.     BYTE color
  8392.  E3h  clear virtual screen from scroll origin to end using current color
  8393.  E4h  redraw window
  8394.  E5h  select menu style
  8395.     BYTE style (normally 18h)
  8396.         bits 5,4 = 01 use two-letter menu entries for remainder of
  8397.           this stream
  8398.  E5h  (panel file only)
  8399.     BYTE modifier
  8400.         bits 7,6 = 11 panel stream creates new window
  8401.              = 10 panel defines new field table for existing window
  8402.              = 01 panel stream uses existing window & field table
  8403.         bit 5 = 1 stream contains a field table (create kyboard object)
  8404.         bit 4 = 1 stream defines input fields (create keyboard object)
  8405.         bit 3 = 1 stream defines select fields but not input fields
  8406.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  8407.         bit 1 reserved
  8408.         bit 0 reserved
  8409.  E6h  create new window and perform rest of manipulations in new window
  8410.     BYTE number of rows
  8411.     BYTE number of columns
  8412.     Return: DWORD object handle of new window returned on stack at end
  8413.     Note:    the window is created with a physical size of 0x0 at the
  8414.           same position as the window to which this stream was sent
  8415.  E7h  no operation
  8416.  E8h  scroll area up (top left corner defined by opcode C1h)
  8417.     BYTE height
  8418.     BYTE width
  8419.  E9h  scroll area down (top left corner defined by opcode C1h)
  8420.     BYTE height
  8421.     BYTE width
  8422.  EAh  scroll area left (top left corner defined by opcode C1h)
  8423.     BYTE height
  8424.     BYTE width
  8425.  EBh  scroll area right (top left corner defined by opcode C1h)
  8426.     BYTE height
  8427.     BYTE width
  8428.  ECh  set logical attributes for window contents
  8429.     BYTE video modes command applies to
  8430.         bit 7    monochrome
  8431.         bit 6    color text, EGA/VGA graphics
  8432.         bit 5    medium-resolution CGA graphics
  8433.         bit 4    high-resolution CGA graphics
  8434.     BYTE which attributes to set
  8435.         bit 7    if set, copy single following byte to indicated attribs
  8436.         bits 4-6  number of first attribute to change - 1
  8437.         bits 0-3  number of consecutive attributes to change
  8438.     N BYTEs new attributes
  8439.  EDh  set logical attributes for window frame
  8440.     BYTE video modes command applies to (also see opcode ECh)
  8441.     BYTE which attributes to set
  8442.         bit 7    if set, copy single following byte to indicated attrs
  8443.         bits 4-6  number of first attribute to change - 1
  8444.         bits 0-3  number of consecutive attributes to change
  8445.     N BYTEs new attributes
  8446.           attributes
  8447.                1 = top left corner
  8448.                2 = top right corner
  8449.                3 = bottom left corner
  8450.                4 = bottom right corner
  8451.                5 = top edge
  8452.                6 = bottom edge
  8453.                7 = left edge
  8454.                8 = right edge
  8455.  EEh  set characters for window frame
  8456.     BYTE video modes command applies to (also see opcode ECh)
  8457.     BYTE which characters to set
  8458.         bit 7    if set, copy single following byte to indicated chars
  8459.         bits 4-6  number of first character to change - 1
  8460.         bits 0-3  number of consecutive characters to change
  8461.     N BYTEs new chars (same relative position as attributes above)
  8462.  EFh  set window name
  8463.     BYTE length of name (should be in range 0 to logical screen width)
  8464.     N BYTEs name
  8465.  F0h  clear input field to blanks
  8466.     BYTE field number
  8467.  F1h  fill input field with character
  8468.     BYTE field number
  8469.     BYTE char
  8470.  F2h  set color of input field
  8471.     BYTE field number (1-N)
  8472.     BYTE attribute
  8473.  F3h  set initial contents of input field
  8474.     BYTE field number (1-N)
  8475.     N BYTEs enough chars to exactly fill field as defined by op FFh
  8476.  F4h  position cursor to start of specific input field
  8477.     BYTE field number (1-N)
  8478.  F5h  change field table entry
  8479.     BYTE field number
  8480.     7-8 BYTEs field table entry (also see opcode FFh below)
  8481.  F6h  set field type
  8482.     BYTE field number
  8483.     BYTE type
  8484.         00h inactive
  8485.         40h output field
  8486.         80h input field
  8487.         C0h deselected field
  8488.         C2h selected field
  8489.  F7h  "broadcast write"    write data to fields with program output bit set in
  8490.       the field table entry, in field number order
  8491.     N BYTEs (total length of all program output fields)
  8492.  F8h  scroll field up a line
  8493.     BYTE field number
  8494.  F9h  scroll field down a line
  8495.     BYTE field number
  8496.  FAh  scroll field left
  8497.     BYTE field number
  8498.  FBh  scroll field right
  8499.     BYTE field number
  8500.  FCh  set field table header
  8501.     6 BYTEs    field table header (see #0346)
  8502.  FDh  reset modified bit for all fields
  8503.  FEh  reset selected and modified bits for all fields
  8504.  FFh  set up input fields
  8505.     6 BYTEs    table header (see #0346)
  8506.     7/8N BYTEs the field table entries, one for each field (see #0348)
  8507.     Note:    DESQview uses and updates the actual copy of the information
  8508.           which is contained in the stream.  Thus this info must remain
  8509.           intact until after the data entry is complete.
  8510. SeeAlso: #0343,#0350
  8511.  
  8512. (Table 0345)
  8513. Values for TopView logical attributes:
  8514.  01h    normal text
  8515.  02h    highlighted normal text
  8516.  03h    help text
  8517.  04h    highlighted help text
  8518.  05h    error message
  8519.  06h    highlighted error message
  8520.  07h    emphasized text
  8521.  08h    marked text
  8522.  9-16    reverse video versions of 1-8
  8523. SeeAlso: #0344
  8524.  
  8525. Format of TopView field table header:
  8526. Offset    Size    Description    (Table 0346)
  8527.  00h    BYTE    number of fields (must be <= existing number of fields)
  8528.  01h    BYTE    screen behavior bits (see #0347)
  8529.  02h    BYTE    current input field (updated by DESQview)
  8530.  03h    BYTE    current select field (updated by DESQview)
  8531.  04h    BYTE    attribute for select fields when they are pointed at
  8532.  05h    BYTE    attribute for select fields which have been selected
  8533. SeeAlso: #0344,#0348
  8534.  
  8535. Bitfields for TopView screen behavior bits:
  8536. Bit(s)    Description    (Table 0347)
  8537.  7    reserved
  8538.  6    menu items may be selected via keyboard
  8539.  5    left mouse button in "status" mode (press anywhere in window
  8540.       immediately returns control to application)
  8541.  4    right mouse button in "status" mode
  8542.  3    select fields return contents or blanks rather than 'Y' or 'N'
  8543.  2    modified bits reset on return to application
  8544.  1-0    type of data returned
  8545.     00 no data returned on read of keyboard
  8546.     01 data returned as array of characters containing all fields packed
  8547.           together, with no field numbers
  8548.     10 data returned as numbered variable-length records for all fields
  8549.     11 data returned as numbered variable-length records for the fields
  8550.           which were modified
  8551. SeeAlso: #0344
  8552.  
  8553. Format of TopView field table entry:
  8554. Offset    Size    Description    (Table 0348)
  8555.  00h    BYTE    start row    \
  8556.  01h    BYTE    start column  \ if menu selection and start is to
  8557.  02h    BYTE    end row          / right or below end, select from kbd only
  8558.  03h    BYTE    end column   /
  8559.  04h    BYTE    field type (see #0349)
  8560.  05h    BYTE    modifier
  8561.         if type is fill-in, then bit flags to determine behavior
  8562.           bit 7     automatically enter CR when field full
  8563.           bit 6     move to next field when current field is full
  8564.           bit 5     enter text from right end (for numbers)
  8565.           bit 4     force input to uppercase
  8566.           bit 3     clear old contents on first keystroke
  8567.           bit 2     input returned when cursor moves out of
  8568.               modified field ("validate", API level 2.02+)
  8569.           bit 1     reserved
  8570.           bit 0     reserved
  8571.         if select field, first key to press to activate
  8572.           00h if have to point-&-click or is an extended-ASCII
  8573.               keystroke (only if two-key menus enabled)
  8574.  06h    BYTE    (select field only) normal color of field
  8575.  07h    BYTE    second key for select field.  This byte is present iff
  8576.           two-letter menu entries selected with opcode E5h, and in that
  8577.           case is present regardless of field type
  8578. SeeAlso: #0346
  8579.  
  8580. Bitfields for TopView field type:
  8581. Bit(s)    Description    (Table 0349)
  8582.  7,6    field class
  8583.     00 inactive (non-entry) field
  8584.     01 echos keystrokes input to make menu selection
  8585.     10 fill-in field
  8586.     11 select field
  8587.  5    field can be filled by broadcast write (F7h opcode)
  8588.  4    reserved
  8589.  3    reserved
  8590.  2    reserved
  8591.  1    set if field selected
  8592.  0    set if field modified
  8593. SeeAlso: #0348
  8594.  
  8595. (Table 0350)
  8596. Values for MODE 01h "QUERY STREAM" opcodes:
  8597. (valid only for those opcodes listed here)
  8598.  A0h return logical cursor row in next byte
  8599.  A1h return logical cursor column in next byte
  8600.  A2h return top row of scrolling region in next byte
  8601.  A3h return left column of scrolling region in next byte
  8602.  A4h return row of physical window origin in next byte
  8603.  A5h return column of physical window origin in next byte
  8604.  A6h return height of physcial window in next byte
  8605.  A7h return width of physical window in next byte
  8606.  A8h return row of viewport origin in next byte
  8607.  A9h return column of viewport origin in next byte
  8608.  AAh return height of virtual screen in next byte
  8609.  ABh return width of virtual screen in next byte
  8610.  AFh return current video mode in next byte
  8611.  C0h return current logical cursor position in next two bytes
  8612.  C1h return top left corner of scrolling region in next two bytes
  8613.  C2h return current window position in next two bytes
  8614.  C3h return current window size in next two bytes
  8615.  C4h return current viewport origin in next two bytes
  8616.  C5h return current virtual screen size in next two bytes
  8617.  D0h \ overwritten with D0h if frames may fall off screen edge
  8618.  D1h /               D1h if frames always displayed entirely
  8619.  D2h \ overwritten with D2h if DESQview controls color palette
  8620.  D3h /               D3h if application changes color palette
  8621.  D4h \ overwritten with D4h if window visible
  8622.  D5h /               D5h if window hidden
  8623.  D6h \ overwritten with D6h if window has frame
  8624.  D7h /               D7h if window unframed
  8625.  D8h \ overwritten with D8h if reading characters from window
  8626.  D9h /               D9h if reading attributes from window
  8627.  DAh \ overwritten with DAh if using logical attributes
  8628.  DBh /               DBh if using physical attributes
  8629.  DCh \ overwritten with DCh if TTY control char interpretation on
  8630.  DDh /               DDh if TTY control char interpretation off
  8631.  DEh \ overwritten with DEh if writing both characters and attributes
  8632.  DFh /               DFh if leaving attributes untouched
  8633.  E2h return current color in next byte
  8634.  ECh get logical attributes for window contents
  8635.     BYTE execute call if currently in specified video mode
  8636.         bit 7    monochrome
  8637.         bit 6    color text, EGA/VGA graphics
  8638.         bit 5    medium-resolution CGA graphics
  8639.         bit 4    high-resolution CGA graphics
  8640.     BYTE which attributes to get
  8641.         bit 7    unused???
  8642.         bits 4-6 first attribute to get - 1
  8643.         bits 0-3 number of consecutive attributes
  8644.     N BYTEs buffer to hold attributes
  8645.  EDh get logical attributes for window frame
  8646.     BYTE execute call if currently in video mode (also see opcode ECh)
  8647.     BYTE which attributes to get
  8648.         bit 7    unused???
  8649.         bits 4-6 first attribute to get - 1
  8650.         bits 0-3 number of consecutive attributes
  8651.     N BYTEs buffer to hold attributes
  8652.  EEh get characters for window frame
  8653.     BYTE execute call if currently in video mode (also see opcode ECh)
  8654.     BYTE which attributes to get
  8655.         bit 7    unused???
  8656.         bits 4-6 first char to get - 1
  8657.         bits 0-3 number of consecutive chars
  8658.     N BYTEs buffer to hold chars
  8659.  EFh return first N characters of current window name
  8660.     BYTE    max length of returned name
  8661.     N BYTEs buffer to hold window name
  8662.  F3h return contents of specified field
  8663.     BYTE field number
  8664.     N BYTEs buffer to hold field contents (size equal to field size)
  8665.  F5h get field table entry
  8666.     BYTE field number
  8667.     7-8 BYTEs buffer to hold field table entry (see #0348)
  8668.     Notes:    DV < 2.26 always returns 7 bytes
  8669.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  8670.           is using 8-byte entries and eighth byte after    F5h is E7h
  8671.           (NOP); otherwise, 7 bytes are returned
  8672.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  8673.           on the field table entry size
  8674.  F6h get type of a field
  8675.     BYTE field number
  8676.     BYTE type
  8677.  FCh get field table header
  8678.     6 BYTEs buffer to store field table header (see #0346)
  8679. SeeAlso: #0343,#0351
  8680.  
  8681. (Table 0351)
  8682. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  8683.  00h allow window to be moved horizontally
  8684.  01h allow window to be moved vertically
  8685.  02h allow window to change width
  8686.  03h allow window to change height
  8687.  04h allow window to be scrolled horizontally
  8688.  05h allow window to be scrolled vertically
  8689.  06h allow "Close Window" menu selection for application
  8690.  07h allow "Hide Window" menu selection for application
  8691.  08h allow application to be suspended ("Rearrange/Freeze")
  8692.  0Eh allow "Scissors" menu
  8693.  10h allow DESQview main menu to be popped up
  8694.  11h allow "Switch Windows" menu
  8695.  12h allow "Open Window" menu
  8696.  13h allow "Quit" menu selection
  8697.  20h-33h opposite of 00h-13h, disallow specified action
  8698.  40h notify if horizontal position of window changes
  8699.  41h notify if vertical position of window changes
  8700.  42h notify if width of window changes
  8701.  43h notify if height of window changes
  8702.  44h notify if window scrolled horizontally
  8703.  45h notify if window scrolled vertically
  8704.  46h notify if window is closed--program has to clean up and exit itself
  8705.  47h notify if window is hidden
  8706.  48h notify if "?" on main menu selected
  8707.  49h notify if pointer message sent to window
  8708.  4Ah notify if window is placed in foreground
  8709.  4Bh notify if window is placed in background
  8710.  4Ch notify if video mode changes
  8711.  4Dh notify if "Scissors" menu "Cut" option selected
  8712.  4Eh notify if "Scissors" menu "Copy" option selected
  8713.  4Fh notify if "Scissors" menu "Paste" option selected
  8714.  50h notify if DESQview main menu about to pop up
  8715.  51h notify if DESQview main menu popped down
  8716.  60h-71h     opposite of 40h-51h: don't notify on specified event
  8717.  84h attach window to parent task's window (both move together)
  8718.  85h detach window from parent task's window (may move independently)
  8719.  86h disable background operation for application
  8720.  87h enable running in background
  8721.  88h set minimum size of physical window
  8722.     BYTE rows
  8723.     BYTE columns
  8724.  89h set maximum size of physical window
  8725.     BYTE rows
  8726.     BYTE cols
  8727.  8Ah set primary asynchronous notification routine (see #0353)
  8728.     DWORD address of routine, 0000h:0000h means none (see also below)
  8729.  8Bh set async notification parameter
  8730.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  8731.  ACh (DV2.2+) perform regular select field attribute processing
  8732.  ADh (DV2.2+) protect attributes in selected field from being lost
  8733.  AEh make window default notify window for owning app (API level 2.00+)
  8734.  AFh set selected field marker character
  8735.     BYTE character to display at left edge of selected fields
  8736.  BCh set standard field processing mode
  8737.  BDh set alternate field processing mode (enables cursor pad for menus)
  8738.  BEh disables changing reverse logical attributes with ECh opcode
  8739.  BFh enables changing reverse logical attributes with ECh opcode
  8740.  C0h make current window topmost in system
  8741.  C1h force current process into foreground
  8742.  C2h make current window topmost in process
  8743.  C3h position mouse pointer relative to origin of current field
  8744.     BYTE rows below upper left corner of field
  8745.     BYTE columns to right of upper left corner of field
  8746.  C4h position mouse pointer relative to origin of given field
  8747.     BYTE field number
  8748.     BYTE rows below upper left corner of field
  8749.     BYTE columns to right of upper left corner of field
  8750.  C5h orphan current window (also hides it)
  8751.     Note: must be last in stream; all subsequent commands ignored
  8752.  C6h show all windows for this process
  8753.  C7h hide all windows for this process
  8754.  C8h suspend process and hide all its windows
  8755.  C9h force current process into background
  8756.  CAh make current window bottom-most in process
  8757.  CBh cancel current window manager operation, remove DV menu, give control
  8758.       to topmost application
  8759.  CCh orphan window and give it to the system for use as paste data
  8760.  CEh reorder windows
  8761.     DWORD pointer to null-terminated list of words; each word is segment
  8762.           of object handle for a window
  8763.  FFh no operation
  8764. SeeAlso: #0343,#0350,#0352
  8765.  
  8766. (Table 0352)
  8767. Values for MODES 14h to 1Fh "USER STREAMS":
  8768.     normally NOPs, but may be defined by SETESC message to invoke FAR
  8769.     routines, one for each mode number
  8770.       on entry to handler,
  8771.         DS:SI -> first byte of actual stream (not header)
  8772.         CX = number of bytes in stream
  8773.         ES:DI = window's handle
  8774. SeeAlso: #0350,#0351
  8775.  
  8776. (Table 0353)
  8777. Values asynchronous notification routine defined by man.stream 8Ah called with:
  8778.     ES:DI = handle of window
  8779.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  8780.        mailbox contains message indicating event
  8781.           Opcode
  8782.            40h  horizontal movement
  8783.            DWORD object handle of window
  8784.            BYTE     new row
  8785.            BYTE     new col
  8786.            41h  vertical movement
  8787.            DWORD object handle of window
  8788.            BYTE     new row
  8789.            BYTE     new col
  8790.            42h  horizontal size change
  8791.            DWORD object handle of window
  8792.            BYTE     new rows
  8793.            BYTE     new cols
  8794.            43h  vertical size change
  8795.            DWORD object handle of window
  8796.            BYTE     new rows
  8797.            BYTE     new cols
  8798.            44h  scrolled horizontally
  8799.            DWORD object handle of window
  8800.            BYTE     mouse row within window
  8801.            BYTE     mouse column within window
  8802.            BYTE     field mouse is on, 0 if none
  8803.            BYTE     amount moved: >0 right, <0 left, 0 done
  8804.            45h  scrolled vertically
  8805.            DWORD object hande of window
  8806.            BYTE     mouse row within window
  8807.            BYTE     mouse column within window
  8808.            BYTE     field mouse is on, 0 if none
  8809.            BYTE     amount moved: >0 down, <0 up, 0 done
  8810.            46h  window close request
  8811.            DWORD object handle of window
  8812.            BYTE     mouse pointer row
  8813.            BYTE     mouse pointer column
  8814.            BYTE     field mouse is on, 0 if none
  8815.            47h  application's windows hidden
  8816.            48h  Help for Program selected
  8817.            DWORD object handle of window
  8818.            BYTE     mouse pointer row
  8819.            BYTE     mouse pointer column
  8820.            BYTE     field mouse is on, 0 if none
  8821.            49h  pointer message sent to window
  8822.            DWORD pointer handle which received message
  8823.            4Ah  switched to window from another ("raise")
  8824.            4Bh  switched away from the window ("lower")
  8825.            4Ch  video mode changed
  8826.            BYTE new BIOS video mode
  8827.            4Dh  Scissors/cUt selected
  8828.            DWORD object handle of window
  8829.            BYTE     row of upper left corner
  8830.            BYTE     column of upper left corner
  8831.            BYTE     field number ul corner is in, 0=none
  8832.            DWORD handle of orphaned window created with
  8833.              copy of data from specified region
  8834.            BYTE     height of region
  8835.            BYTE     width of region
  8836.            4Eh  Scissors/Copy selected
  8837.            DWORD object handle of window
  8838.            BYTE     row of upper left corner
  8839.            BYTE     column of upper left corner
  8840.            BYTE     field number ul corner is in, 0=none
  8841.            DWORD handle of orphaned window created with
  8842.              copy of data from specified region
  8843.            BYTE     height of region
  8844.            BYTE     width of region
  8845.            4Fh  Scissors/Paste selected
  8846.            DWORD object handle of window
  8847.            BYTE     row of upper left corner
  8848.            BYTE     column of upper left corner
  8849.            BYTE     field number ul corner is in, 0=none
  8850.            DWORD handle of orphaned window with data
  8851.            BYTE     height of region
  8852.            BYTE     width of region
  8853.             Note: orphaned data window should be adopted or freed
  8854.                 when done
  8855.            50h  main menu about to pop up
  8856.            51h  main menu popped down
  8857. Return: all registers unchanged
  8858. --------Q-1512--BH06-------------------------
  8859. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  8860.     AH = 12h
  8861.     BH = 06h
  8862.     BL = object
  8863.         00h object handle in DWORD on top of stack
  8864.         mailbox, keyboard, pointer, or timer
  8865.         (DV 2.50+) window
  8866.         01h (DV 2.50+) current task's window
  8867.         04h given task's keyboard (task's handle on top of stack)
  8868.         05h current task's default keyboard
  8869.     STACK: DWORD new priority of object in task's OBJECTQ
  8870.             (new priority of task if window handle)
  8871. Return: STACK popped
  8872. Notes:    initially all objects have the same default value.  Should only make
  8873.       relative adjustments to this default value.
  8874.     when changing priorities, all objects already on the objectq are
  8875.       reordered
  8876.     for window handles, only the non-blocked task(s) with the highest
  8877.       priority receive CPU time under DESQview 2.50-2.52; the default
  8878.       priority is 0Ah
  8879. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  8880. --------Q-1512--BH07-------------------------
  8881. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  8882.     AH = 12h
  8883.     BH = 07h
  8884.     BL = object
  8885.         00h object handle in DWORD on top of stack
  8886.         mailbox, keyboard, pointer, or timer
  8887.         (DV 2.50+) window
  8888.         01h (DV 2.50+) current task's window
  8889.         04h given task's keyboard (task's handle on top of stack)
  8890.         05h current task's default keyboard
  8891. Return: STACK: DWORD object priority
  8892. Note:    initially all objects have the same default value.  Should only make
  8893.       relative adjustments to this default value.
  8894. SeeAlso: AH=12h/BH=06h
  8895. --------Q-1512--BH08-------------------------
  8896. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  8897.     AH = 12h
  8898.     BH = 08h
  8899.     BL = object
  8900.         00h handle in DWORD on top of stack
  8901.         window: total character positions in window
  8902.         timer: elapsed time since timer started
  8903.         pointer: number of messages queued to pointer object
  8904.         panel: number of panels in panel file
  8905.         keyboard: number of input buffers queued
  8906.         01h total chars in current task's default window
  8907.         02h number of messages in task's mailbox (task's handle on stack)
  8908.         03h number of messages in current task's mailbox
  8909.         04h number of input buffers queued in task's kbd (handle on stack)
  8910.         05h number of input buffers queued for current task's default kbd
  8911.         06h number of objects queued in OBJECTQ (task's handle on stack)
  8912.         07h number of objects queued in current task's OBJECTQ
  8913.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  8914.         0Dh (DV 2.26+) total chars in parent task's window
  8915. Return: DWORD on top of stack is result (any handle on stack has been popped)
  8916. Note:    for panel objects, a count of zero is returned if no panel file is open
  8917.       for the object
  8918. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  8919. --------Q-1512--BH09-------------------------
  8920. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  8921.     AH = 12h
  8922.     BH = 09h
  8923.     BL = object
  8924.         00h handle in DWORD on top of stack
  8925.         window: get chars/line
  8926.         timer: get 1/100 seconds remaining before timer expires
  8927.         mailbox: (DV/X) get number of bytes queued to mailbox
  8928.         01h get number of chars/line in current task's default window
  8929.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  8930.         0Dh (DV 2.26+) get chars/line in parent task's window
  8931. Return: DWORD on top of stack is length (any handle on stack has been popped)
  8932. SeeAlso: AH=12h/BH=08h
  8933. --------Q-1512--BH0A-------------------------
  8934. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  8935.     AH = 12h
  8936.     BH = 0Ah
  8937.     BL = window to write to
  8938.         00h window handle is DWORD on top of stack
  8939.         01h current task's default window
  8940.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  8941.         0Dh (DV 2.26+) default window of parent of current task
  8942.     STACK:    DWORD count of attributes
  8943.         DWORD address of attribute string
  8944.         DWORD count of characters
  8945.         DWORD address of character string
  8946. Return: STACK popped
  8947. Notes:    if one string is longer than the other, the shorter one will be reused
  8948.       until the longer one is exhausted
  8949.     the cursor is left just after the last character written
  8950. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  8951. --------Q-1512--BH0A-------------------------
  8952. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  8953.     AH = 12h
  8954.     BH = 0Ah
  8955.     BL = mailbox to write to
  8956.         00h handle is DWORD on top of stack
  8957.         02h default mailbox of task whose handle is on top of stack
  8958.         03h current task's default mailbox
  8959.     STACK:    DWORD    status (low byte)
  8960.         DWORD    length of message
  8961.         DWORD    address of message
  8962. Return: STACK popped
  8963. Notes:    the message is copied into either system or common memory
  8964.     insufficient memory normally causes the process to be aborted; under
  8965.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  8966. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  8967. --------Q-1512--BH0A-------------------------
  8968. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  8969.     AH = 12h
  8970.     BH = 0Ah
  8971.     BL = object
  8972.         00h handle is DWORD on top of stack
  8973.         timer: start timer for specified interval
  8974.         pointer: set control flags (see #0355)
  8975.         keyboard: set control flags (see #0354)
  8976.         04h set control flags on KEYBOARD object (handle on top of stack)
  8977.         05h set control flags on task's default KEYBOARD object
  8978.     STACK: (if timer)   DWORD duration in 1/100 seconds
  8979.            (otherwise)  DWORD bits to set
  8980. Return: STACK popped
  8981. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  8982.  
  8983. Bitfields for DESQview keyboard object bits:
  8984. Bit(s)    Description    (Table 0354)
  8985.  15    reserved, can't be set
  8986.  14    unused
  8987.  13    reserved, can't be set
  8988.  12-6    unused
  8989.  5    (DV 2.2+) exclusive input
  8990.  4    filter all keys (used with handler established by SETESC)
  8991.     if 0, only keys that would normally be displayed are filtered
  8992.  3    program continues executing while input in progress
  8993.  2    insert mode active for field mode
  8994.  1    hardware cursor displayed when task is hardware cursor owner
  8995.     must be set if keyboard in field mode and field table includes input
  8996.       fields
  8997.  0    keyboard is in field mode rather than keystroke mode
  8998.  
  8999. Bitfields for DESQview pointer object bits:
  9000. Bit(s)    Description    (Table 0355)
  9001.  15    reserved, can't be set
  9002.  14-8    unused
  9003.  7    mouse pointer is hidden while in window
  9004.  6    get messages even if window not topmost
  9005.  5    get messages even if window not foreground
  9006.  4    multiple clicks separated by less than 1/3 second are counted and
  9007.       returned in a single message
  9008.  3    pointer position is relative to screen origin, not window origin
  9009.  2    send message on button release as well as button press
  9010.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  9011.       pointer leaves the window
  9012.  0    send message only on button activity, not movement
  9013.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  9014. --------Q-1512--BH0B-------------------------
  9015. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  9016.     AH = 12h
  9017.     BH = 0Bh
  9018.     BL = window to write attributes to
  9019.         00h handle is DWORD on top of stack
  9020.         01h current task's default window
  9021.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  9022.         0Dh (DV 2.26+) default window of parent of current task
  9023.     STACK:    DWORD number of attributes to write
  9024.         DWORD address of attributes
  9025. Return: STACK popped
  9026. Note:    the attributes are written starting at the current cursor position; the
  9027.       cursor is left just after the last position written
  9028. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  9029. --------Q-1512--BH0B-------------------------
  9030. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  9031.     AH = 12h
  9032.     BH = 0Bh
  9033.     BL = mailbox to write to
  9034.         00h handle is DWORD on top of stack
  9035.         02h default mailbox of task whose handle is on top of stack
  9036.         03h current task's default mailbox
  9037.     STACK:    DWORD    status (low byte)
  9038.         DWORD    length of message
  9039.         DWORD    address of message
  9040. Return: STACK popped
  9041. Notes:    only a pointer to the message is stored, but the write may still fail
  9042.       due to insufficient memory
  9043.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  9044. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  9045. --------Q-1512--BH0B-------------------------
  9046. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  9047.     AH = 12h
  9048.     BH = 0Bh
  9049.     BL = OBJECTQ from which to remove all copies of a particular object
  9050.         06h OBJECTQ of task whose handle is on top of stack
  9051.         07h task's default OBJECTQ
  9052.     STACK:    DWORD    handle of object to remove
  9053. Return: STACK popped
  9054. Note:    should be sent whenever an object is erased or closed
  9055. --------Q-1512--BH0B-------------------------
  9056. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  9057.     AH = 12h
  9058.     BH = 0Bh
  9059.     BL = object
  9060.         00h handle is DWORD on top of stack
  9061.         pointer: reset control flags
  9062.         keyboard: reset control flags
  9063.         04h clear control flags on KEYBOARD object (handle on top of stack)
  9064.         05h clear control flags on task's default KEYBOARD object
  9065.     STACK:    DWORD    which bits to clear (see #0354,#0355)
  9066. Return: STACK popped
  9067. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  9068. --------Q-1512--BH0C-------------------------
  9069. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  9070.     AH = 12h
  9071.     BH = 0Ch
  9072.     BL = object
  9073.         00h handle is DWORD on top of stack
  9074.         window:      fill with given character from scroll origin to end
  9075.         keyboard: attach to a window
  9076.         timer:      open
  9077.         pointer:  start taking input for window
  9078.         panel:      associate with a panel file
  9079.         01h fill task's default window with given char from scrl org to end
  9080.         02h open given task's mailbox for input (task's handle on stack)
  9081.         03h open current task's mailbox
  9082.         04h attach a KEYBOARD to a window (handle on top of stack)
  9083.         05h attach task's default KEYBOARD to a window
  9084.         06h open a task's OBJECTQ (task's handle on top of stack)
  9085.         07h open current task's OBJECTQ
  9086.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  9087.         0Dh (DV 2.26+) fill default window of parent of current task
  9088.      STACK: (if window)   DWORD character to fill with
  9089.         (if keyboard) DWORD handle of window to attach to
  9090.         (if pointer)  DWORD handle of window to attach to
  9091.         (if panel)    DWORD length of filename or resident panel
  9092.                   DWORD address of filename or resident panel
  9093.         (otherwise)   nothing
  9094. Return: STACK popped
  9095. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  9096.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  9097.       the panel file
  9098.     result code of open may be retrieved with STATUS message
  9099.     logical cursor is left at scroll origin after filling window
  9100.     the task opening a mailbox becomes its owner, and the only task allowed
  9101.       to read the mailbox
  9102.     messages are only sent to a pointer object when the mouse is positioned
  9103.       in the window to which the pointer has been attached
  9104.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  9105.       messages automatically open the timer
  9106. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  9107. --------Q-1512--BH0D-------------------------
  9108. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  9109.     AH = 12h
  9110.     BH = 0Dh
  9111.     BL = object
  9112.         00h handle is DWORD on top of stack
  9113.         timer:      close
  9114.         keyboard: detach from window and discard queued input
  9115.         pointer:  stop taking input
  9116.         panel:      close
  9117.         mailbox:  close, unlock, and discard any pending messages
  9118.         02h close given task's mailbox (task's handle on top of stack)
  9119.         03h close task's default mailbox
  9120.         04h close KEYBOARD object (handle on top of stack)
  9121.         05h close task's default KEYBOARD
  9122.         06h close given task's OBJECTQ (task's handle on top of stack)
  9123.         07h close current task's OBJECTQ
  9124. Return: STACK popped if handle passed on stack
  9125. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  9126.       ERASE message (AH=12h/BH=0Eh)
  9127.     when a panel object is closed, the panel file and any panels currently
  9128.       in use are freed; window and keyboard objects created by APPLY are
  9129.       not affected, but field mode input ceases
  9130.     open but idle timer objects consume a small amount of CPU time
  9131. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  9132. --------Q-1512--BH0E-------------------------
  9133. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  9134.     AH = 12h
  9135.     BH = 0Eh
  9136.     BL = object
  9137.         00h handle is DWORD on top of stack
  9138.         window:      clear from scroll origin to end of window
  9139.         keyboard: discard input
  9140.         timer:      cancel current interval
  9141.         pointer:  discard all pending messages
  9142.         mailbox:  discard all pending messages
  9143.         01h clear task's default window from scroll origin to end
  9144.         02h discard all queued messages in mailbox (handle on top of stack)
  9145.         03h discard all queued messages in current task's default mailbox
  9146.         04h discard all input queued to KEYBOARD (handle on top of stack)
  9147.         05h discard all input queued to task's default KEYBOARD
  9148.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  9149.         07h remove all objects from current task's OBJECTQ
  9150.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  9151.         0Dh (DV 2.26+) clear default window of parent of current task
  9152. Return: STACK popped if handle passed on stack
  9153. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  9154. SeeAlso: AH=12h/BH=02h
  9155. --------Q-1512--BH0F-------------------------
  9156. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  9157.     AH = 12h
  9158.     BH = 0Fh
  9159.     BL = object
  9160.         00h handle is DWORD on top of stack
  9161.         timer:     is it running?
  9162.         pointer: return status of last message
  9163.         panel:     verify success of last OPEN or APPLY
  9164.         02h return status of last msg READ from mailbox (handle on stack)
  9165.         03h return status of last msg READ from task's default mailbox
  9166.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  9167.         05h get status of last msg from task's default KEYBOARD
  9168.         06h return whether OBJECTQ is open or not (handle on top of stack)
  9169.         07h return whether task's default OBJECTQ is open or not
  9170. Return: DWORD on top of stack is status (any handle passed on stack popped)
  9171. Notes:    if object is a panel object, the status indicates the error code:
  9172.       00h successful
  9173.       14h panel name not in panel directory
  9174.       15h not enough memory to apply panel
  9175.       16h invalid panel format
  9176.       17h panel file already open
  9177.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  9178.       95h not enough memory to open panel file     > that the panel was
  9179.       98h null panel file name            /  not opened
  9180.     if object is a timer, the status is:
  9181.       00000000h open but not running
  9182.       40000000h open and running
  9183.       80000000h closed
  9184.     if object is an OBJECTQ, the status is:
  9185.       00000000h open
  9186.       80000000h closed
  9187.     if object is a keyboard in keystroke mode, the status is the extended
  9188.       character code (scan code) of the last keystroke
  9189.     if object is a keyboard in field mode, the status indicates the reason
  9190.       for the last return from the field manager
  9191.       00h Enter key pressed
  9192.       01h Button 1 or keystroke selection
  9193.       02h Button 2
  9194.       03h validation
  9195.       04h auto Enter on field
  9196.       1Bh Escape pressed
  9197.       46h ^Break pressed
  9198.       other: extended code for key terminating input
  9199.     the status of mailbox messages sent by the window manager is always 80h
  9200.     the status of a pointer message is the same as the status field in the
  9201.       message
  9202. SeeAlso: AH=12h/BH=04h"READ"
  9203. --------Q-1512--BH10-------------------------
  9204. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  9205.     AH = 12h
  9206.     BH = 10h
  9207.     BL = object
  9208.         00h handle is DWORD on top of stack
  9209.         window: return TRUE if logical cursor past end of window
  9210.         mailbox: ???
  9211.         01h returns TRUE if logical cursor past end of task's def window
  9212.         02h return ??? for task's mailbox (task's handle on top of stack)
  9213.         03h return ??? for current task's mailbox
  9214.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  9215.         0Dh (DV 2.26+) check log cursor of window of parent task
  9216. Return: DWORD on top of stack is status (any handle on stack has been popped)
  9217. --------Q-1512--BH11-------------------------
  9218. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  9219.     AH = 12h
  9220.     BH = 11h
  9221.     BL = window for which to move cursor
  9222.         00h window's handle is DWORD on top of stack
  9223.         01h task's default window
  9224.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  9225.         0Dh (DV 2.26+) default window of parent of current task
  9226.     STACK: DWORD column
  9227.            DWORD row
  9228. Return: STACK popped
  9229. --------Q-1512--BH11-------------------------
  9230. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  9231.     AH = 12h
  9232.     BH = 11h
  9233.     BL = mailbox to name
  9234.         00h DWORD on top of stack is mailbox handle
  9235.         02h use given task's mailbox (task's handle on top of stack)
  9236.         03h use current task's default mailbox
  9237.     STACK: DWORD length of name
  9238.            DWORD address of name
  9239. Return: STACK popped
  9240. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  9241. --------Q-1512--BX1100-----------------------
  9242. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  9243.     AH = 12h
  9244.     BX = 1100h
  9245.     STACK: DWORD object handle for pointer object
  9246.            DWORD number of colums to scale pointer position to
  9247.            DWORD number of rows to scale pointer position to
  9248. Return: STACK popped
  9249. SeeAlso: AH=12h/BX=1200h
  9250. --------Q-1512--BH12-------------------------
  9251. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  9252.     AH = 12h
  9253.     BH = 12h
  9254.     BL = window to read from
  9255.         00h handle is DWORD on top of stack
  9256.         01h read next N chars or attributes on task's default window
  9257.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  9258.         0Dh (DV 2.26+) read default window of parent of current task
  9259.     STACK: DWORD count
  9260. Return: STACK: DWORD number of bytes actually read
  9261.            DWORD address of buffer containing data
  9262. Notes:    reading starts at the current logical cursor position; the cursor is
  9263.       updated to point at the character following the last one read
  9264.     any translucent blanks (FFh) which are visible on screen are changed
  9265.       to the character which is seen through them
  9266.     the string produced by the read is placed in an input buffer which may
  9267.       be reused by the next READ or READN of a window
  9268.     window stream opcodes D8h and D9h determine whether the read returns
  9269.       characters or attributes
  9270. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  9271. --------Q-1512--BH12-------------------------
  9272. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  9273.     AH = 12h
  9274.     BH = 12h
  9275.     BL = mailbox for which to retrieve name
  9276.         00h DWORD on top of stack is mailbox handle
  9277.         02h use given task's mailbox (task's handle on top of stack)
  9278.         03h use current task's default mailbox
  9279.     STACK: DWORD length of buffer for name
  9280.            DWORD pointer to buffer
  9281. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  9282. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  9283. Note:    the returned name is not NUL-terminated
  9284. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  9285. --------Q-1512--BX1200-----------------------
  9286. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  9287.     AH = 12h
  9288.     BX = 1200h
  9289.     STACK: DWORD object handle for pointer
  9290. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  9291.            DWORD pointer pos scaled as if window were this many rows high
  9292. SeeAlso: AH=12h/BX=1100h
  9293. --------Q-1512--BH13-------------------------
  9294. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  9295.     AH = 12h
  9296.     BH = 13h
  9297.     BL = window object
  9298.         00h DWORD on top of stack is handle for window to redraw
  9299.         01h redraw task's default window
  9300.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  9301.         0Dh (DV 2.26+) redraw default window of parent of current task
  9302. Return: STACK popped if handle was passed on stack
  9303. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  9304. --------Q-1512--BH13-------------------------
  9305. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  9306.     AH = 12h
  9307.     BH = 13h
  9308.     BL = mailbox from which to read
  9309.         00h DWORD on top of stack is mailbox handle
  9310.         02h use given task's mailbox (task's handle on top of stack)
  9311.         03h use current task's default mailbox
  9312.     STACK: DWORD size of buffer in bytes
  9313.            DWORD pointer to buffer
  9314. Return: STACK: DWORD number of bytes read
  9315. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  9316. Notes:    this call blocks if no input is available, but will return less than
  9317.       the requested number of bytes if some (but insufficient) data is
  9318.       available
  9319.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  9320.       4 or 5 set, as common memory may be exhausted by that call when
  9321.       attempting to read the next message
  9322. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  9323. --------Q-1512--BX1300-----------------------
  9324. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  9325.     AH = 12h
  9326.     BX = 1300h
  9327.     STACK: DWORD object handle for pointer
  9328.            DWORD character to use for pointer
  9329. Return: STACK popped
  9330. --------Q-1512--BH14-------------------------
  9331. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  9332.     AH = 12h
  9333.     BH = 14h
  9334.     BL = message modifier
  9335.         00h handle is DWORD on top of stack
  9336.         01h define user stream
  9337.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  9338.         05h intercept keystrokes from task's default KEYBOARD to a window
  9339.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  9340.                  DWORD address of FAR user stream handler
  9341.            (if keyboard) DWORD address of FAR filter function (see #0356)
  9342. Return: STACK popped
  9343.  
  9344. (Table 0356)
  9345. Values keyboard filter function is called with when keyboard is in field mode:
  9346.     AL = character
  9347.     AH = 00h or extended ASCII code if AL = 00h
  9348.     BL = field number
  9349.     CH = cursor column
  9350.     CL = cursor row
  9351.     DL = field type modifier (sixth item in field table entry)
  9352.     DH = seventh item in field table entry
  9353.     ES:SI = window's handle
  9354.     DS:DI -> field table entry for field containing the cursor
  9355. Return: AH = action to take
  9356.         00h use keystroke
  9357.         01h ignore keystroke
  9358.         FFh beep and ignore keystroke
  9359. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  9360. --------Q-1512--BH14-------------------------
  9361. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  9362.     AH = 12h
  9363.     BH = 14h
  9364.     BL = object
  9365.         00h mailbox handle is DWORD on top of stack
  9366.         02h use given task's mailbox (task's handle on top of stack)
  9367.         03h use current task's default mailbox
  9368. Return: STACK popped if BL=00h
  9369. Note:    release exclusive access by sending CLOSE message to mailbox
  9370.     access may be requested multiple times, and requires multiple CLOSEs
  9371. SeeAlso: AH=12h/BH=0Dh
  9372. --------Q-1512--BH15-------------------------
  9373. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  9374.     AH = 12h
  9375.     BH = 15h
  9376.     BL = object
  9377.         00h DWORD on top of stack
  9378.         mailbox, keyboard, or pointer only
  9379.         02h mailbox for task whose handle is on top of stack
  9380.         03h mailbox for current task
  9381.         04h keyboard for task whose handle is on top of stack
  9382.         05h keyboard for current task
  9383.     STACK: DWORD flags (see #0357,#0358)
  9384. Return: STACK popped
  9385. Notes:    only available if the API level has been set to at least 2.20
  9386.     equivalent to performing SUBFROM and ADDTO calls on the object
  9387.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  9388.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  9389. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  9390.  
  9391. Bitfields for DESQview mailbox object flags:
  9392. Bit(s)    Description    (Table 0357)
  9393.  0    all mail messages in common memory
  9394.  1    allow write even if closed
  9395.  2    don't erase messages when mailbox closed
  9396.  4    (DV/X) append messages with like status and sender (stream-oriented
  9397.       mail)
  9398.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  9399.  6    (DV/X) make mailbox into non-owned mailbox
  9400.  
  9401. Bitfields for DESQview keyboard object flags:
  9402. Bit(s)    Description    (Table 0358)
  9403.  5    exclusive input when keyboard in use for input
  9404. --------Q-1512--BH16-------------------------
  9405. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  9406.     AH = 12h
  9407.     BH = 16h
  9408.     BL = object
  9409.         00h DWORD on top of stack
  9410.         mailbox, keyboard, or pointer only
  9411.         02h mailbox for task whose handle is on top of stack
  9412.         03h mailbox for current task
  9413.         04h keyboard for task whose handle is on top of stack
  9414.         05h keyboard for current task
  9415. Return: STACK: DWORD current control flags (see #0357,#0358)
  9416. Notes:    only available if the API level has been set to at least 2.20
  9417.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  9418.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  9419. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  9420. --------Q-1512--BH17-------------------------
  9421. INT 15 - DESQview v2.42-2.52 - BUG
  9422.     AH = 12h
  9423.     BH = 17h
  9424.     BL = object
  9425.         00h DWORD on top of stack
  9426.         mailbox, keyboard, or pointer only
  9427.         02h mailbox for task whose handle is on top of stack
  9428.         03h mailbox for current task
  9429.         04h keyboard for task whose handle is on top of stack
  9430.         05h keyboard for current task
  9431. Return: STACK popped if handle passed on stack
  9432. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  9433.       keyboards, and pointers, but causes a random branch
  9434.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  9435. --------Q-1512--BH80-------------------------
  9436. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  9437.     AH = 12h
  9438.     BH = 80h
  9439. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  9440.       not pop up a "Programming Error" window, instead returning an error
  9441.       code in AL (see #0359)
  9442. SeeAlso: AH=12h/BH=00h
  9443.  
  9444. (Table 0359)
  9445. Values for DESQview error code:
  9446.  00h    no error
  9447.  01h    invalid values
  9448.  02h    alias invalid
  9449.  03h    handle valid but wrong type
  9450.  04h    invalid handle
  9451. --------Q-1512--BH81-------------------------
  9452. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  9453.     AH = 12h
  9454.     BH = 81h
  9455. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  9456.       not pop up a "Programming Error" window, instead returning an error
  9457.       code in AL (see #0359)
  9458. SeeAlso: AH=12h/BH=01h
  9459. --------Q-1512--BH82-------------------------
  9460. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  9461.     AH = 12h
  9462.     BH = 82h
  9463. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  9464.       not pop up a "Programming Error" window, instead returning an error
  9465.       code in AL (see #0359)
  9466. SeeAlso: AH=12h/BH=02h
  9467. --------Q-1512--BH83-------------------------
  9468. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  9469.     AH = 12h
  9470.     BH = 83h
  9471. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  9472.       not pop up a "Programming Error" window, instead returning an error
  9473.       code in AL (see #0359)
  9474. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  9475. --------Q-1512--BH84-------------------------
  9476. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  9477.     AH = 12h
  9478.     BH = 84h
  9479. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  9480.       not pop up a "Programming Error" window, instead returning an error
  9481.       code in AL (see #0359)
  9482. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  9483. --------Q-1512--BH85-------------------------
  9484. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  9485.     AH = 12h
  9486.     BH = 85h
  9487. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  9488.       not pop up a "Programming Error" window, instead returning an error
  9489.       code in AL (see #0359)
  9490. SeeAlso: AH=12h/BH=05h
  9491. --------Q-1512--BH86-------------------------
  9492. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  9493.     AH = 12h
  9494.     BH = 86h
  9495. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  9496.       not pop up a "Programming Error" window, instead returning an error
  9497.       code in AL (see #0359)
  9498. SeeAlso: AH=12h/BH=06h
  9499. --------Q-1512--BH87-------------------------
  9500. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  9501.     AH = 12h
  9502.     BH = 87h
  9503. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  9504.       not pop up a "Programming Error" window, instead returning an error
  9505.       code in AL (see #0359)
  9506. SeeAlso: AH=12h/BH=07h
  9507. --------Q-1512--BH88-------------------------
  9508. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  9509.     AH = 12h
  9510.     BH = 88h
  9511. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  9512.       not pop up a "Programming Error" window, instead returning an error
  9513.       code in AL (see #0359)
  9514. SeeAlso: AH=12h/BH=08h
  9515. --------Q-1512--BH89-------------------------
  9516. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  9517.     AH = 12h
  9518.     BH = 89h
  9519. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  9520.       not pop up a "Programming Error" window, instead returning an error
  9521.       code in AL (see #0359)
  9522. SeeAlso: AH=12h/BH=09h
  9523. --------Q-1512--BH8A-------------------------
  9524. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  9525.     AH = 12h
  9526.     BH = 8Ah
  9527. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  9528.       not pop up a "Programming Error" window, instead returning an error
  9529.       code in AL (see #0359)
  9530. SeeAlso: AH=12h/BH=0Ah
  9531. --------Q-1512--BH8B-------------------------
  9532. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  9533.     AH = 12h
  9534.     BH = 8Bh
  9535. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  9536.       not pop up a "Programming Error" window, instead returning an error
  9537.       code in AL (see #0359)
  9538. SeeAlso: AH=12h/BH=0Bh
  9539. --------Q-1512--BH8C-------------------------
  9540. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  9541.     AH = 12h
  9542.     BH = 8Ch
  9543. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  9544.       not pop up a "Programming Error" window, instead returning an error
  9545.       code in AL (see #0359)
  9546. SeeAlso: AH=12h/BH=0Ch
  9547. --------Q-1512--BH8D-------------------------
  9548. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  9549.     AH = 12h
  9550.     BH = 8Dh
  9551. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  9552.       not pop up a "Programming Error" window, instead returning an error
  9553.       code in AL (see #0359)
  9554. SeeAlso: AH=12h/BH=0Dh
  9555. --------Q-1512--BH8E-------------------------
  9556. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  9557.     AH = 12h
  9558.     BH = 8Eh
  9559. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  9560.       not pop up a "Programming Error" window, instead returning an error
  9561.       code in AL (see #0359)
  9562. SeeAlso: AH=12h/BH=0Eh
  9563. --------Q-1512--BH8F-------------------------
  9564. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  9565.     AH = 12h
  9566.     BH = 8Fh
  9567. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  9568.       not pop up a "Programming Error" window, instead returning an error
  9569.       code in AL (see #0359)
  9570. SeeAlso: AH=12h/BH=0Fh
  9571. --------Q-1512--BH90-------------------------
  9572. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  9573.     AH = 12h
  9574.     BH = 90h
  9575. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  9576.       not pop up a "Programming Error" window, instead returning an error
  9577.       code in AL (see #0359)
  9578. SeeAlso: AH=12h/BH=10h
  9579. --------Q-1512--BH91-------------------------
  9580. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  9581.     AH = 12h
  9582.     BH = 91h
  9583. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  9584.       not pop up a "Programming Error" window, instead returning an error
  9585.       code in AL (see #0359)
  9586. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  9587. --------Q-1512--BH92-------------------------
  9588. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  9589.     AH = 12h
  9590.     BH = 92h
  9591. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  9592.       not pop up a "Programming Error" window, instead returning an error
  9593.       code in AL (see #0359)
  9594. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  9595. --------Q-1512--BH93-------------------------
  9596. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  9597.     AH = 12h
  9598.     BH = 93h
  9599. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  9600.       not pop up a "Programming Error" window, instead returning an error
  9601.       code in AL (see #0359)
  9602. SeeAlso: AH=12h/BH=13h
  9603. --------Q-1512--BH94-------------------------
  9604. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  9605.     AH = 12h
  9606.     BH = 94h
  9607. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  9608.       not pop up a "Programming Error" window, instead returning an error
  9609.       code in AL (see #0359)
  9610. SeeAlso: AH=12h/BH=14h
  9611. --------Q-1512--BH95-------------------------
  9612. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  9613.     AH = 12h
  9614.     BH = 95h
  9615. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  9616.       not pop up a "Programming Error" window, instead returning an error
  9617.       code in AL (see #0359)
  9618. SeeAlso: AH=12h/BH=15h
  9619. --------Q-1512--BH96-------------------------
  9620. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  9621.     AH = 12h
  9622.     BH = 96h
  9623. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  9624.       not pop up a "Programming Error" window, instead returning an error
  9625.       code in AL (see #0359)
  9626. SeeAlso: AH=12h/BH=16h
  9627. --------!---Section--------------------------
  9628.